【问题标题】:Restricting injection from a bean definition, not from the autowiring end (bean not injectable implictly)限制来自 bean 定义的注入,而不是来自自动装配和(bean 不可隐式注入)
【发布时间】:2025-11-27 12:05:01
【问题描述】:

Spring 中是否有任何注释/技巧将 @Configuration @Bean 标记为仅在严格限定的 @Autowireds 上可注入?

我希望我的 bean 能够以一种只有那些特别需要它的 @Qualifer 的人才能注入它的方式进行限定。它确实是一种控制在哪里可以自动装配的机制,根据上下文中可用的 bean 没有歧义或任意决定。

所以如果没有我主动将注入标记为预期,我的 bean 永远不会被自动装配为我无法控制的副作用

【问题讨论】:

    标签: java spring dependency-injection ioc-container autowired


    【解决方案1】:

    您可以使用 @Conditional 注释控制 bean 创建。

    此外,如果您需要真正控制使用 bean,您可以创建一些注解,如 @ConroledByQualifer 并使用此注解代替标准 spring 组件注解或扩展(如服务、存储库 ....)。 所以 spring 无法处理它以进行自动装配,因为一个人不知道如何处理它。

    您需要添加 custom BeanPostProcessor 以与 @ConroledByQualifer 一起使用 - 创建并注入。因此,您的自定义 bean 将仅由 @ConroledByQualifer 的 BeanPostProcessor 处理,而不是自定义 spring BeanPostProcessors。

    【讨论】:

      最近更新 更多