我在春天做运动 我已经定义了包含所有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
答案 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");