异常信息如下:
2012-9-8 14:42:57 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class
org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'areaManager':
Autowiring of fields failed; nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: protected com.cn.common.base.IDAO com.cn.common.base.ManagerImpl.iDAO; nested
exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type
[com.cn.common.base.IDAO] is defined: expected single matching bean but found 2: [iDAO, areaDAO]
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstanti
ation(AutowiredAnnotationBeanPostProcessor.java:243)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean
(AbstractAutowireCapableBeanFactory.java:959)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean
(AbstractAutowireCapableBeanFactory.java:472)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run
(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject
(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean
(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization
(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh
(AbstractApplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext
(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized
(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected
com.cn.common.base.IDAO com.cn.common.base.ManagerImpl.iDAO; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type
[com.cn.common.base.IDAO] is defined: expected single matching bean but found 2: [iDAO, areaDAO]
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.in
ject(AutowiredAnnotationBeanPostProcessor.java:435)
at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields
(InjectionMetadata.java:105)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstanti
ation(AutowiredAnnotationBeanPostProcessor.java:240)
... 40 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type
[com.cn.common.base.IDAO] is defined: expected single matching bean but found 2: [iDAO, areaDAO]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency
(DefaultListableBeanFactory.java:621)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.in
ject(AutowiredAnnotationBeanPostProcessor.java:412)
... 42 more
2012-9-8 14:42:57 org.apache.catalina.core.ApplicationContext log
说明如下:有一个公共的dao层接口(IDAO)及其实现类(DAOImpl)和service层接口(IManager)及其实现类(ManagerImpl)
IDAO.java如下:
public interface IDAO {
public void add(Object obj);
}
DAOImpl.java如下:
public class DAOImpl implements IDAO {
@Autowired
protected HibernateTemplate ht;
public void add(Object obj) {
ht.save(obj);
}
}
IManager.java如下:
public interface IManager {
public void add(Object obj);
}
ManagerImpl.java如下:
public class ManagerImpl implements IManager {
@Autowired
protected IDAO iDAO;
public void add(Object obj) {
iDAO.add(obj);
}
}
现在有一个area类,以及dao层接口实现类,service层接口实现类,分别继承以上相应的接口或者类,AreaManagerImpl.java
代码如下:
public class AreaManagerImpl extends ManagerImpl implements IAreaManager {
@Autowired
private IAreaDAO areaDAO;
//此方法为AreaDAO接口方法
public List<Area> getAreaListByFather(Integer father) {
return areaDAO.getAreaListByFather(father);
}
}
===========================主要JAVA文件结束=====================
spring配置:
<context:annotation-config />
<bean id="iDAO" class="com.cn.common.base.DAOImpl" />
<bean id="areaManager" class="com.cn.common.area.service.AreaManagerImpl" />
<bean id="areaDAO" class="com.cn.common.area.dao.AreaDAOImpl" />
启动tomcat后报以上的异常,求各位大神,小弟不胜感激,谢谢了
分享到:
相关推荐
这个bean将被添加到Spring的bean定义中,并且可以在其他bean中通过`@Autowired`进行注入。`@Bean`可以包含额外的配置,如`@Lazy`(表示延迟初始化)、`@Profile`(环境特定的bean)等。 在`@Autowired`注入时的顺序...
在Spring框架中,`@Autowired`注解是一个关键特性,用于自动装配Bean的依赖。它极大地简化了传统XML配置中的bean依赖注入过程。本笔记将深入探讨如何在Spring 4中利用`@Autowired`注解配置注入关系,以及它与前一篇...
在Spring框架中,`@Autowired`和`@Resource`都是用于自动装配Bean的重要注解,它们简化了依赖注入的过程,使得代码更加简洁、易于维护。本文将深入探讨这两个注解的使用、区别以及如何在实际开发中应用它们。 首先...
在Spring框架中,`@Autowired`和`@Resource`注解是两个常见的依赖注入(DI, Dependency Injection)工具,它们都是用来解决组件之间的耦合问题,使得代码更加灵活和可测试。然而,这两个注解在具体使用时有一些关键性...
Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...
在Spring框架中,`@Autowired`注解是一个关键特性,用于实现依赖注入(Dependency Injection,简称DI)。依赖注入是设计模式中的一个重要概念,它有助于降低组件之间的耦合度,提高代码的可测试性和可维护性。`@...
但是在多线程处理任务中,当我们使用 @Autowired 注入 bean 时,会出现空指针异常。这是为什么呢? 原因分析: 在 SpringBoot 应用程序中,bean 的注入是通过 ApplicationContext 来实现的。在多线程处理任务中,每...
当我们谈论"BeanPostProcessor实现注入的@Autowired注入的对象是增强的代理对象"时,实际上是在讨论如何通过`BeanPostProcessor`来对`@Autowired`注入的bean进行代理增强。 首先,让我们了解`@Autowired`注解的工作...
在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...
S2SH整合指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们分别是MVC(Model-View-Controller)架构中的控制层、业务层和数据持久层的优秀解决方案。在Java Web开发中,S2SH整合能提供一个强大、灵活...
例如,我们可以自定义一个DAO类,继承`HibernateDaoSupport`,然后利用`@Autowired`来注入Service层的bean,实现业务逻辑和数据访问的解耦: ```java @Repository public class CustomUserDao extends ...
在使用 @Autowired 注解时,如果在 Spring IOC 容器里面存在多个相同类型的 Bean 实例,那么 Spring 启动的时候,会提示一个错误,大概意思原本只能注入一个单实例 Bean,但是在 IOC 容器里面却发现有多个,导致注入...
在Spring框架中,`@Autowired`注解是核心的依赖注入(Dependency Injection,DI)工具,它允许开发者自动地将Bean实例注入到需要的地方,无需显式地通过setter方法或构造函数来设置。在Java配置方式下,`@Autowired`...
Spring框架中,使用@Autowired注解可以将依赖项注入到Bean中,但是当我们需要将依赖项注入到抽象父类时,会遇到一些问题。如果我们直接使用@Autowired注解在抽象父类中,可能不会生效,因为抽象父类不能被实例化。...
与`@Resource`不同,`@Autowired`主要通过类型匹配来找到合适的bean进行注入。例如: ```java @Autowired private DataSource dataSource; ``` 在这个例子中,Spring会查找类型为`DataSource`的bean,并将其注入到...
它会对标注了 @Autowired 的 Bean 进行预处理,然后在真正的注入阶段将依赖的 Bean 实例注入到目标 Bean 中。 在我们的例子中,我们定义了两个 Service:UserService 和 ManagerService。UserService 只有一个 ...
Intellij IDEA如何去掉@Autowired 注入警告的方法 在本篇文章中,我们将探讨如何在Intellij IDEA中去掉@Autowired 注入警告的方法。这个问题是很多开发者在使用Spring框架和Mybatis时经常遇到的问题。 首先,让...
"解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题" Spring Boot项目在使用多线程处理任务时,经常会遇到无法通过@Autowired注入bean的问题。本文将介绍解决该问题的方法,并详细解释原因和...
Spring AOP 导致@Autowired 依赖注入失败的解决方法 Spring AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它允许开发者在不修改源代码的情况下,增加新的功能。然而,在使用 Spring AOP 时,...
Spring @Autowired 注入小技巧...Field stu1 in com.example.demo.controller.MyController required a single bean, but 2 were found: - wangEr: defined in file[C:\Users\huangjiawei\Desktop\demo\target\classes\...