gpt4 book ai didi

java - 限制从 bean 定义注入(inject),而不是从 Autowiring 端注入(inject)(bean 不可隐式注入(inject))

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:02 25 4
gpt4 key购买 nike

Spring 中是否有任何注释/技巧将 @Configuration @Bean 标记为只能在严格限定的 @Autowired 上注入(inject)?

我希望我的 bean 以一种只有那些专门调用它的 @Qualifer 才能注入(inject)它的方式进行限定。它确实是一种机制,用于控制在哪里能够 Autowiring ,没有歧义,也没有根据上下文中的可用 bean 做出任意决定。

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

最佳答案

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

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

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

关于java - 限制从 bean 定义注入(inject),而不是从 Autowiring 端注入(inject)(bean 不可隐式注入(inject)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com