限制从 bean 定义注入,而不是从自动装配端注入(bean 不可隐式注入)

Restricting injection from a bean definition, not from the autowiring end (bean not injectable implictly)

Spring 中是否有任何 annotation/trick 将 @Configuration @Bean 标记为只能在严格限定的 @Autowired 上注入?

我希望我的 bean 以一种只有那些专门调用它的 @Qualifer 才能注入它的方式进行限定。它确实是一种控制在哪里可以自动装配的机制,没有歧义,也没有任意决定,具体取决于上下文中的可用 bean。

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

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

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

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