问题描述
我正在使用 @ComponentScan
和 @Component
来定义我的spring bean。我想要的是宣布其中一个bean为 autowire-candidate = false
。
I am using @ComponentScan
and @Component
to define my spring beans. What I would like is to declare one of these beans to be autowire-candidate=false
.
这可以在xml中使用此属性来完成。是不是注释中的等价物?
This could be done with this attribute in xml. Isn't there the equivalent in annotations?
我想要这个的原因是因为我有2个相同接口的实现,我不想使用 @Qualifier
。
The reason I want this is because I have 2 implementations of the same interface and I don't want to use @Qualifier
.
编辑:使用@Primary是一种有效的解决方法,但autowire-candidate在我看来似乎是一个有用的功能,有自己的语义。
Using @Primary is a valid work-around, but autowire-candidate seems to me like a useful feature with its own semantics.
谢谢
推荐答案
看起来Spring拒绝 autowire- candidate = false
概念,不再支持。没有带注释的模拟,所以 @Primary
是你注意到的最好的解决方法。
Looks like Spring refused autowire-candidate=false
concept and it no longer supported. There is no analogue with annotations, so @Primary
is the best work-around as you noticed.
另一种方式是使用自定义 org.springframework.beans.factory.support.AutowireCandidateResolver
,它在 DefaultListableBeanFactory
中用于逻辑从autowire候选人中排除不受欢迎的bean。在这种情况下,该技术将类似于 autowire-candidate = false
在 SimpleAutowireCandidateResolver
中使用的技术。
Another way is to use custom org.springframework.beans.factory.support.AutowireCandidateResolver
, which is used in DefaultListableBeanFactory
, with logic that exclude undesirable beans from autowire candidates. In such case, the technology will be similar to that used for autowire-candidate=false
in SimpleAutowireCandidateResolver
.
这篇关于如何声明Spring bean autowire-candidate =" false"什么时候使用注释?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!