Spring:No bean named 'beanScope' is defined

初学Spring,“No bean named ‘beanScope‘ is defined”这个问题困扰了我好几个小时,查资料无果后,重写好几遍代码后发现问题居然是配置文件不能放在包里。。。要放在src的直接目录下。。。心碎了一地。。。

使用的是  windows 10 / eclipse 4.5.2 /Spring-framework-4.3.0/

下面是我的Spring学习代码:

第一步:下载Spring的jar文件,传送门:http://repo.spring.io/milestone/org/springframework/ 找到想要的版本后点击下载

第二步:去tomcat官网下载commonts-logging.jar文件,这是使用Spring必须的jar包,传送门:http://commons.apache.org/proper/commons-logging/

因为我用了junit做测试,就也要去下载junit.jar啦,github里面就可以下载:https://github.com/junit-team/junit4/wiki/Download-and-Install,注意哦,在这个页面除了下载junit.jar还要下载hamcrest-core.jar包,同时加入项目才会生效。

第三步:导入相关jar包,我导入的有:

第四步:新建一个bean类,代码如下

package com.demo.bean;

public class BeanScope {
    public void say() {
        System.out.println("BeanScope say : " + this.hashCode());
    }
}

第五步:新建一个xml配置文件spring-beanscope,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" >

 <bean id="beanScope" class="com.demo.bean.BeanScope" scope="singleton"></bean>
 </beans>

第六步:新建一个测试基类UnitTestBase,代码如下:

package com.demo.test.base;

import org.junit.Before;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.StringUtils;

public class UnitTestBase {

    private ApplicationContext context;

    private String springXmlpath;

    public UnitTestBase() {}

    public UnitTestBase(String springXmlpath) {
        this.springXmlpath = springXmlpath;
    }

    @Before
    public void before() {
        if (StringUtils.isEmpty(springXmlpath)) {
            springXmlpath = "classpath*:spring-*.xml";
        }
        try {
            context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+"));
        } catch (BeansException e) {
            e.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    protected <T extends Object> T getBean(String beanId) {
        try {
            return (T)context.getBean(beanId);
        } catch (BeansException e) {
            e.printStackTrace();
            return null;
        }
    }

    protected <T extends Object> T getBean(Class<T> clazz) {
        try {
            return context.getBean(clazz);
        } catch (BeansException e) {
            e.printStackTrace();
            return null;
        }
    }

}

第七步:新建一个测试类TestBeanScope,代码如下:

package com.demo.test.bean;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;

import com.demo.bean.BeanScope;
import com.demo.test.base.UnitTestBase;

@RunWith(BlockJUnit4ClassRunner.class)
public class TestBeanScope extends UnitTestBase {

    public TestBeanScope() {
        super("classpath*:spring-beanscope.xml");
    }

    @Test
    public void testSay() {
        BeanScope beanScope = super.getBean("beanScope");
        beanScope.say();
    }

}

最后执行成功!注意配置文件不能放在包里,要直接放在src目录下,否则会报错:No bean named ‘beanScope‘ is defined

最后,当时这个问题困扰了我好久,搞得我搜了好多资料,发现了一个不错的Spring学习平台,推荐一下,哈哈哈:http://www.tutorialspoint.com/spring/index.htm

Spring:No bean named 'beanScope' is defined

时间: 2024-10-12 04:32:38

Spring:No bean named 'beanScope' is defined的相关文章

CXF和spring整合遇到的问题:No bean named &#39;cxf&#39; is defined

今天在做ws和spring整合的时候,很不幸的遇到了这个问题,百度了好久,竟然没人遇到这个问题,后来谷歌了一下,都是遇到这个问题的了...在看到一篇文章中提到了cxf.xml,所以我果断的打开这个配置文件看了一下,有一个很关键的地方: <bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus" destroy-method="shutdown"/> 哦,原来这个bean在这里定

No bean named &#39;xxxxx&#39; is defined,已解决,这个坑很难发现,你get了吗

出现No bean named 'xxxxx' is defined异常 没有定义名为xxx的bean 如果你的代码写的都对,只有一个地方出错了,那就是你的 basePackage=的包名路径写的有问题. 这个坑在复制这个配置文件的时候,很难发现哪里出错了. 路径如果出错,系统就会找不到你定义的bean. 配置文件中: No bean named 'xxxxx' is defined,已解决,这个坑很难发现,你get了吗 原文地址:https://www.cnblogs.com/java-263

(待解答)Spring报错:Exception in thread &quot;main&quot; org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;car&#39; is defined

新建了一个Spring工程,有2个类:HelloWorld.Car.在Main.java文件里获取类时,发现只能获取到HelloWorld类,不能获取到Car类. HelloWorld.java: 1 package com.tt.spring.beans; 2 3 public class HelloWorld { 4 5 private String name; 6 7 public void setName(String name) { 8 System.out.println("hell

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;App&#39; is defined

工具:Eclipse mars 环境:jdk1.8 说明:这是在学习Spring Task时遇到的一个bug,代码如下: 定时任务类: package com.task.test; import java.util.Date; import org.springframework.stereotype.Component; @Component public class App { public void execute1(){ System.out.printf("Task: %s, Curr

No bean named &#39;springSecurityFilterChain&#39; is defined

转载自 http://blog.csdn.net/yuanzhuohang/article/details/7233752  本人按照mkyong.com的example配置spring security3,死活不成功,后来通过查看tomcat日志文件,找到异常信息,搜索到本篇文章,在本文章的提示下解决了spring security3配置的问题 今天配置Spring Security的时候遇到了这样的问题 No bean named 'springSecurityFilterChain' is

报错!!!!!!!!!!!org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;springSessionRepositoryFilter&#39; is defined

报错!!!!!!!!!!! 因用maven项目不是很熟练,经常在Maven转Web项目(为什么要转web项目?因为要在tomcat中跑起来.maven项目好像是可以直接部署到tomcat的,或集成tomcat插件,还没尝试过)的时候会出现很奇怪的问题.下面的一个报错就是最近经常遇到的一个问题.因为每次遇到它时,都会花很长时间去排查,所以在此把它记录下来,以便后面再遇到此问题时,顺利过坑.报错如下: org.springframework.beans.factory.NoSuchBeanDefin

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;ExtractAbstractServiceHandler&#39; is defined

在利用 Spring 集成 thrift 时,报错如下: javax.servlet.ServletException: Servlet.init() for servlet search-nlp-service threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportVa

java 异常问题 No bean named &#39;sessionFactory&#39; is defined 和 initialize a collection of role

关于java的"No bean named 'sessionFactory' is defined "  频繁的出现在与SHH框架中或是在与Sping+JPA底层使用了HIbernate annotation 的实现:出现异常的原因是找不到sessionFactory bean. 原因有如下: 1.在Many-to-one  或是many-to-many 时候 我们设置了fetchType="lazy" 延时加载.解决问题的方法在web.xml中,加入  openS

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named &#39;sessionFactory&#39; is defined

如果之前所有测试都通过,并且保证测试sessionFactory可以创建成果,运行项目访问页面后报如下错 问题基本可能出现在web.xml的spring上下文加载的路径问题上. org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' is defined org.springframework.beans.factory.NoSuchBeanDefinition