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

时间:2021-03-21 20:30:44

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

Text代码  spring容器注入一个接口的两个实现类
  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。