与 Spring 一样,blueprint 支持原型范围。但与 Spring 不同的是,我看不到任何有关如何使用它的文档。
在 Spring 中,您可以要求上下文给您一个新的 bean,在 Blueprint 世界中等价物是什么?
与 Spring 一样,blueprint 支持原型范围。但与 Spring 不同的是,我看不到任何有关如何使用它的文档。
在 Spring 中,您可以要求上下文给您一个新的 bean,在 Blueprint 世界中等价物是什么?
BlueprintContainer.getComponentInstance() 完全符合您的要求。
蓝图容器代表蓝图包的托管状态。蓝图容器提供对所有托管组件的访问。这些是 bean、服务和服务引用。可以通过注入预定义的“blueprintContainer”组件 id 来获得 Blueprint Container。
例子
蓝图.xml:
<!-- blueprintContainer is predefined component here -->
<bean id="myService" class="myPackage.MyService">
<property name="container" ref="blueprintContainer"/>
</bean>
<!-- prototype which can be created from myService -->
<bean id="myPrototype" class="myPackage.MyPrototype" scope="prototype"/>
我的服务.java:
// ...
// create new instance
MyPrototype myPrototype =
(MyPrototype) container.getComponentInstance("myPrototype");
pom.xml:
<!-- BlueprintContainer from Apache Aries-->
<dependency>
<groupId>org.apache.aries.blueprint</groupId>
<artifactId>org.apache.aries.blueprint.core</artifactId>
<version>1.3.0</version>
</dependency>
如果 bean 是作用域原型,那么每次将 bean 注入某个地方时都会创建一个新的 bean 实例。因此,每个获得注入范围原型 bean 的客户端都会获得该 bean 的一个新实例。