Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@Qualifier是否期望bean ID作为元素值?是Spring@Qualifier';幕后的元素bean ID?_Java_Spring_Spring Boot_Spring Mvc_Dependency Injection - Fatal编程技术网

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
,并且:

  • 如果我用自定义ID定义其中一个组件,比如
    @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可供注入,一个具有ID
    identifier
    ,另一个具有Qualifier
    identifier
    ,那么哪一个将优先被注入


    任何人都会对这一切的工作原理有一些清晰的认识。

    @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以外的东西来限定某物。