gpt4 book ai didi

java - 没有@Autowired的Spring Prototype-Bean Provider

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:22 25 4
gpt4 key购买 nike

我有一个原型(prototype) Bean,它由带有 Provider 的单例 bean 实例化:

@Component
@Scope("prototype")
class MyPrototype {}

@Component
class MySingleton {
@Autowired
javax.inject.Provider<MyPrototype> prototypeFactory;
}

这很好用,但是我们公司规定不允许@Autowired;常见的模式是 @Resource(SingletonBeanClass.BEAN_ID)

是否有可能以这种方式注释 Provider 以便 Spring 查找可以创建它?

我知道我可以使用 @Lookup 添加工厂方法,或者添加一个单例工厂 bean,但我更喜欢 Provider

编辑:我没有让它以这种方式工作,最后不得不编辑 spring.xml;详情请见下文。

最佳答案

由于您有一个 XML 配置文件,您可以通过以下方式通过 XML 对其进行配置:

<bean id="myPrototype" class="some.package.MyPrototype" scope="prototype" />

<bean id="mySingleton" class="some.package.MySingleton">
<lookup-method name="getPrototypeFactory" bean="myPrototype "/>
</bean>

这样,您必须使用 getPrototypeFactory() 访问 myPrototype 而不是直接访问属性。您甚至可以删除这两个类的注释。

有关任何额外的详细信息,您可以查看以下博客文章 Injecting a prototype bean into a singleton bean

关于java - 没有@Autowired的Spring Prototype-Bean Provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46662908/

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