【发布时间】:2017-10-10 09:14:24
【问题描述】:
我有一个原型 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;详情见下文。
【问题讨论】:
-
出于好奇,为什么不允许
@Autowired? -
@araknoid 我认为他们希望直接控制实例化的类......对我来说没有多大意义,但我无法争论这个。
-
是否允许@Inject(来自 javax.inject)?
-
如果你有 bean 注入的 XML 配置文件,可以通过 XML 配置
-
@MystyxMac 至少自动 QA 检查没有抱怨,试图摆脱这个 ;)