Wiring a prototype in blueprint

后端 未结 2 612
刺人心
刺人心 2021-01-24 10:39

Like Spring, blueprint supports the prototype scope. But unlike Spring I can\'t see any documentation about how to use it.

In Spring you can ask the context to give you

相关标签:
2条回答
  • 2021-01-24 11:01

    If a bean is of scope prototype then a new instance of the bean is created each time the bean is injected somewhere. Therefore each client that gets a bean of scope prototype injected gets a new instance of the bean.

    0 讨论(0)
  • 2021-01-24 11:18

    BlueprintContainer.getComponentInstance() does exactly what you are looking for.

    osgi documentation:

    A Blueprint Container represents the managed state of a Blueprint bundle. A Blueprint Container provides access to all managed components. These are the beans, services, and service references. A Blueprint Container can be obtained by injecting the predefined "blueprintContainer" component id.

    Example

    blueprint.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"/>
    

    MyService.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>
    
    0 讨论(0)
提交回复
热议问题