spring容器注入一个接口的两个实现类

spring容器中能拥有两个同种类型的bean吗?我有两个dao类同时实现一个接口,这两个接口注入时报了异常如下。

Text代码  

  1. org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.xxx.xxx.xxx.integration.dao.IDAO] is defined: expected single matching bean but found 2: [aDAOImpl, bDAOImpl]

解决方法:

两个类实现同一个接口,在一个实现类加上@Component("aDAOImpl"),一个加上@Component("bDAOImpl"),在引用的时候加上@Resource(name="aDAOImpl")或者@Resource(name="bDAOImpl"),就会指定用哪个实现类,不加resource注解就会出现上面那个错误。

但需特别强调的是,如果有其它的service用到实现类时没用@Resource,要把所有使用到实现类的注解由@Autowired改为@Resource。

时间: 2024-08-02 15:13:41

spring容器注入一个接口的两个实现类的相关文章

Spring用@Autowire向一个类注入一个接口的两个实现类

@Servicepublic class AaaService implements IChangePassword { @Override public void changePassword(String username, String password) { } } @Servicepublic class BbbService implements IChangePassword { @Override public void changePassword(String usernam

Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方案

在任何一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,另外一种是与系统核心业务无关但同时又提供十分重要服务bean,我们称之为服务类.业务类的bean根据每个系统自身核心功能的不同可以有任意多个,但是服务类的种类在各个系统之间的差异却并不是很大.在系统中经常用到的服务有以下几种,权限服务,日志服务,缓存服务,事务服务以及预警服务等.在整个系统的不断进化过程中,服务类与业务类的关系也不断的发生着变化,由当初垂直模式变为横切模式,这也是编程思想不断演化过程

一个接口有多个实现类的调用方式

1.普通方式实现: // 定义一个接口 interface Person { void eat(String str); } // 第一个实现类 class FirstPerson implements Person { private String name; FirstPerson(String name) { this.name = name; } public void eat(String str) { System.out.println(name + "正在吃" + st

spring调用方法(接口和多个实现类的情况)

以spring框架注入bean说明接口TestService 有2个实现类 TestServiceImp1 @Service("TestService1") ,TestServiceImp2 @Service("TestService2")在controller里注入server的bean时使用注释@Qualifier指明使用的实现类如@Autowired@Qualifier("TestService1")TestService testServ

Spring容器是如何实现 Bean 自动注入(xml)

入口web.xml web.xml 配置文件 <!-- Spring Config --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</par

spring容器

一.简介 spring容器是整个spring框架的核心,通常我们说的spring容器就是bean工厂,bean工厂负责创建和初始化bean.装配bean并且管理应用程序中的bean.spring中提供了两个核心接口:BeanFactory和ApplicationContext,ApplicationContext是BeanFactory子接口,它提供了比BeanFactory更完善的功能. 二.ApplicationContext的工作原理 先建立一个新的java项目,搭建好spring的开发环

使用Spring容器(一)

Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean. Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等.在Spring中,Bean的是一个非常广义的概念

(转)Spring 读书笔记-----使用Spring容器(一)

Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean. Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等.在Spring中,Bean的是一个非常广义的概念

Spring学习2—Spring容器

一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的组件. Spring容器会使用XML解析器读取改属性值,并利用反射来创建该实现类的实例. Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.它们都可以代表Spring容器.Spring容