为了账号安全,请及时绑定邮箱和手机立即绑定

当spring 注解出现以下报错No unique bean of type ?我该怎么解决呢?

当spring 注解出现以下报错No unique bean of type ?我该怎么解决呢?

小唯快跑啊 2021-06-16 15:11:51
这是错误信息No unique bean of type [com.home.web.AbsCrudDaoImpl] is defined: expected single matching bean but found 3: [agoodsCategoryDao, agoodsInfoDao, generateDao]我是写了一个公共的dao类,然后继承这个类,下面是3个公共类的一些代码:
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

答:你应该在类上面加上@Compnnent这个注解,注入到bean里面;或者注意 class的路径不要写错即可不出错。

一、注解策略:

(1)类级别的注解:如@Component、@Repository、@Controller、@Service以及JavaEE6的@ManagedBean和@Named注解,都是添加在类上面的类级别注解。Spring容器根据注解的过滤规则扫描读取注解Bean定义类,并将其注册到Spring IoC容器中。 

(2)类内部的注解:如@Autowire、@Value、@Resource以及EJB和WebService相关的注解等,都是添加在类内部的字段或者方法上的类内部注解。SpringIoC容器通过Bean后置注解处理器解析Bean内部的注解。 Spring实现@Autowire解析和注入的核心的类是通过。

二、AutowiredAnnotationBeanPostProcessor来实现的。我们可以通过其方法列表看出,其中对字段的注入,对属性的注入,还有选择相应的构造方法来注入。

1:从构造方法的缓存中查询其构造方法。

2:若缓存中不存在,则根据反射获取所有构造方法。

3:遍历所有构造方法,查询器是否含有@Autowired属性。

4:判断Autowired注解中指定了required属性 (required属性就是判断是否强依依赖)若存在required就使用默认构造方法。

5:返回指定的构造方法 注入的时候则是通过inject方法来实现。


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 541 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信