线程" main"中的例外情况org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为' customerBo'被定义为

时间:2014-07-28 11:55:00

标签: spring aop

我在春天做运动 我已经定义了包含所有bean的defination的spring-bean.xml文件 它也在项目类路径中 但我得到thr运行时异常NoSuchBeanDefinationException 问题是什么?没有得到 这是我在App.java中的代码

public class App 
{
     public static void main( String[] args )
     {
       ApplicationContextappContext=new ClassPathXmlApplicationContext("classpath*:resources/Spring-Customer.xml");
       System.out.println("ApplicationContext:"+appContext);
       CustomerBo customer=(CustomerBo)appContext.getBean("customerBo");
       customer.addCustomer();
     }
}

以下是我的Spring-Customre.xml文件中的内容

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

    <aop:aspectj-autoproxy />

    <bean id="customerBo" class="com.kishor.customer.bo.Impl.CustomerBoImpl" />

    <!-- Aspect -->
    <bean id="logAspect" class="com.kishor.aspect.LoggingAspect" />

</beans>

这是我的堆栈追踪

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'customerBo' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:568)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1108)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:278)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117)
    at com.kishor.App.main(App.java:18)




HERE IS MY PROJECT STRUCTURE
/ASpectJBased/src
/ASpectJBased/src/main
/ASpectJBased/src/main/java
/ASpectJBased/src/main/java/com
/ASpectJBased/src/main/java/com/kishor
/ASpectJBased/src/main/java/com/kishor/App.java
/ASpectJBased/src/main/java/com/kishor/aspect
/ASpectJBased/src/main/java/com/kishor/aspect/LoggingAspect.java
/ASpectJBased/src/main/java/com/kishor/customer
/ASpectJBased/src/main/java/com/kishor/customer/bo
/ASpectJBased/src/main/java/com/kishor/customer/bo/CustomerBo.java
/ASpectJBased/src/main/java/com/kishor/customer/bo/Impl
/ASpectJBased/src/main/java/com/kishor/customer/bo/Impl/CustomerBoImpl.java
/ASpectJBased/src/main/resources
/ASpectJBased/src/main/resources/Spring-Customer.xml

3 个答案:

答案 0 :(得分:1)

你认为你还没有完全理解maven项目的项目结构,或者犯了一些错误:

  • src/main/java包含需要编译的来源和
  • src/main/resources包含必须未编译的资源。

两者:编译后的源和资源都放在同一目录的末尾(当然子目录仍然存在)

因此位于src/main/resources的文件将位于类路径根目录中!这意味着您必须从规范中删除resources文件夹名称,从中加载xml

ApplicationContextappContext=
      new ClassPathXmlApplicationContext("classpath*:Spring-Customer.xml");

答案 1 :(得分:0)

我建议检查XML配置文件并添加以下行:

<context:component-scan base-package="com.package"></context:component-scan>

答案 2 :(得分:0)

只需将ApplicationContext初始化更改为

即可使其正常工作
  ApplicationContext applicationContext = new 
ClassPathXmlApplicationContext("Spring-Customer.xml");