标签:used qualifier Bean primary bean code 注解 小记
公司最近要将所有的项目微服务化,做成统一管理,小编负责当前项目的微服务改造工作,在接入spring-cloud的过程中不可避免的遇到一些有意思的事情,把他写下来,供诸君雅赏
遇到一个小问题Bean冲突,看下图报错信息
从词义可以看出一个地方引用的名叫metricRegistry的bean原来在两个地方都被定义成了bean
图一:
图二:
作为正常人只能先去看一下是否可以删除其中一个jar包,发现这条路是走不通的只能去排除其中一个Bean了
这个就要讲到今天要说的两个注解了 @Qualifier 和 @Primary
@qualifiel
This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.这个注释可用于作为预备bean的字段或参数,也可以用在其他的自定义注释下
@Qualifier(“XXX”) Spring的Bean注入配置注解,该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的bean,这样就消除了byType方式产生的歧义。
@Primary
Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one ‘primary’ bean exists among the candidates, it will be the autowired value. This annotation is semantically equivalent to the {@code} element’s {@code primary} attribute
不难看出如果用primary注解其中一个bean就要优先于其他的Bean,当然这个对于这种三方jar包最好不要添加的,谁知道它会不会后期又出什么幺蛾子,只能改自己的代码了最后的方案是改成@qualifiel(“getMetricRegistry”),选取了其中一个bean注入
标签:used,qualifier,Bean,primary,bean,code,注解,小记 来源: https://blog.51cto.com/15023245/2647493
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。