Java Spring@Qualifier是否期望bean ID作为元素值?是Spring@Qualifier';幕后的元素bean ID?
Java Spring@Qualifier是否期望bean ID作为元素值?是Spring@Qualifier';幕后的元素bean ID?,java,spring,spring-boot,spring-mvc,dependency-injection,Java,Spring,Spring Boot,Spring Mvc,Dependency Injection,@Qualifier(“identifier”)是为细粒度选择指定候选bean的ID,还是指定了其他内容(例如别名) of@Qualifier实际上并没有就其元素和候选bean ID的关系说太多这方面或其他方面的内容。。但是,有一些有趣的行为: 如果我有几个@组件类实现一个接口A,并且: 如果我用自定义ID定义其中一个组件,比如@Component(“identifier”),然后我会尝试用@Autowired@Qualifier(“identifier”)在其他地方用@Autowired@Qu
@Qualifier(“identifier”)
是为细粒度选择指定候选bean的ID,还是指定了其他内容(例如别名)
of@Qualifier
实际上并没有就其元素和候选bean ID的关系说太多这方面或其他方面的内容。。但是,有一些有趣的行为:
如果我有几个@组件
类实现一个接口A
,并且:
@Component(“identifier”)
,然后我会尝试用@Autowired@Qualifier(“identifier”)
在其他地方用@Autowired@Qualifier”(“identifier”)
注入带有identifier
ID的bean,那么一切都很好——这给了我一种直觉,符合条件的bean与其他bean不同,并通过其ID进行标识(我假定@Component
的value元素是bean ID,尽管@Component的可选元素Summary非常缺乏)李>
@component@Qualifier(“identifier”)
定义同一个组件,而场景的其余部分是相同的,那么所有这些都可以很好地工作@组件(“标识符”)
将相应bean的ID设置为标识符,而@限定符(“标识符”)
没有将相应bean的ID设置为标识符
如果@Qualifier
类似于别名,那么如果要注入的字段有@Qualifier(“identifier”)
作为狭义标准,但有两个候选bean可供注入,一个具有IDidentifier
,另一个具有Qualifieridentifier
,那么哪一个将优先被注入
任何人都会对这一切的工作原理有一些清晰的认识。@Qualifier
是一个限定符,作为最后的手段,它会回到bean的id
和名称
匹配。您还可以创建一个注释,该注释本身用@Qualifier
注释,并注入一个用该专门的@Qualifier
注释注释的bean。有关这件事的完整章节,请参阅。这会让人更加困惑。因此,它依赖/使用bean ID或/和bean名称,这应该与当前的Spring版本相同,对吗?我已经读到名称只是另一种类型的ID,您可以枚举并提供多个名称,而ID始终是唯一的。创建注释是另一个主题。。我的问题在这里有点不同……你的理解是错误的,与版本无关@Qualifier
是一个限定符。如果没有任何东西可以限定它,它将使用组件的id
。您的解释是错误的,因为您只是重新翻译了我们也可以阅读的单词/短语。我知道限定词代表什么,上下文和问题的精神要广泛得多。无论如何,谢谢。问题是限定符是否与id相关,这是不相关的。id只是一种回退机制。大多数人只使用这种回退机制并不能使限定符成为别名,因为它比别名更广泛。因此,限定符是指,通过名称或id以外的内容限定某个内容。@qualifier
是一个限定符,作为最后手段,它返回到bean的id
和name
匹配。您还可以创建一个注释,该注释本身用@Qualifier
注释,并注入一个用该专门的@Qualifier
注释注释的bean。有关这件事的完整章节,请参阅。这会让人更加困惑。因此,它依赖/使用bean ID或/和bean名称,这应该与当前的Spring版本相同,对吗?我已经读到名称只是另一种类型的ID,您可以枚举并提供多个名称,而ID始终是唯一的。创建注释是另一个主题。。我的问题在这里有点不同……你的理解是错误的,与版本无关@Qualifier
是一个限定符。如果没有任何东西可以限定它,它将使用组件的id
。您的解释是错误的,因为您只是重新翻译了我们也可以阅读的单词/短语。我知道限定词代表什么,上下文和问题的精神要广泛得多。无论如何,谢谢。问题是限定符是否与id相关,这是不相关的。id只是一种回退机制。大多数人只使用这种回退机制并不能使限定符成为别名,因为它比别名更广泛。因此,限定词是指,通过名称或id以外的东西来限定某物。