因此,经过大量的挖掘,我发现Spring支持JSR-330。这个JSR定义了一个简单的API - 整个规范实际上只是这个API - 它标准化了几个依赖关系注入接口,注释和行为。
与Spring不同,该接口不会在获取bean引用时引发异常。此外,您仍然需要在某个位置定义此 FactoryBean(读取 XML 或类,这是次优的)。FactoryBean
javax.inject.Provider
@Configuration
由于一个错误,在当前的Spring 3.1.1中,不起作用。它确实在Spring 3.1.0中起作用。javax.inject.Provider
为了使用它,你只需要包括 - 如果你使用maven,你可以:javax.inject
jar
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
春天会检测到它,从那一刻起,你可以简单地:
@Inject
Provider<MyObject> myObjectInstance;
//...
MyObject myObjectInstance.get();
就像在Guice示例中一样,因为它是相同的API。
尽管我之前对康斯坦丁的评论,但Spring确实自己创建了提供者。(我正在针对Spring 3.1.1进行测试,并遇到了这个Spring Provider回归问题)