我有意识地使用了@Qualifier
和它的见解,通过故意破坏了连线逻辑,bean ID,候选bean,复制了限定符等。
我想知道:@Qualifier
实际上是bean ID指定符吗?还是@Qualifier
中的Documentation并没有就其元素/属性与bean ID的关系说太多或其他任何内容,但是:
有一些行为,对我来说似乎很有趣:
如果我有多个@Component
类实现一个interface A {..}
,并且:
@Component("myId")
,然后如果我尝试使用@Autowired @Qualifier("myId")
将这个bean注入其他地方,则一切都会正常工作-这意味着特定的合格bean通过其ID进行区分和标识; @Component
的元素(“ myId”)是bean ID,尽管official documentation我对@Component的 可选元素摘要 一无所知)@Component @Qualifier("myId")
提供相同的组件,而其余方案都是相同的-一切仍然可以很好地工作。 但是!,我观察到的有趣的部分是@Component("X")
将相应的bean的ID设置为X
,而@Qualifier("Y")
没有设置相应的bean Bean的ID为X
。
如果@Qualifier
类似于别名,那么如果要注入的字段具有@Qualifier("name")
来满足狭窄的条件,但是有两个bean可用,一个ID为name
,另一个带有Qualifier name
,将被注入?
任何人都会对这一切的工作方式有所了解吗?