2013-10-15 2 views
1

Подобно Spring, чертеж поддерживает область прототипа. Но в отличие от Spring я не вижу никакой документации о том, как ее использовать.Проводка прототипа в плане

Весной вы можете попросить контекст дать вам новый боб, что эквивалентно миру Blueprint?

ответ

0

Если bean имеет прототип области видимости, тогда новый экземпляр компонента создается каждый раз, когда компонент вставляется где-то. Поэтому каждый клиент, получающий вставку из протона прототипа области, получает новый экземпляр компонента.

+0

Боб не будет вводиться нигде. Боб был бы объектом с объектами с сохранением состояния, который имел бы ссылки на другие синглтоны. Поэтому фабрика должна будет создать эту полностью проводную связь со своими зависимостями. Самому объекту будет локальная переменная в методе службы - то есть экземпляр делегата, который реализует задание. – StripLight

4

BlueprintContainer.getComponentInstance() выполняет именно то, что вы ищете.

osgi documentation:

копирку Контейнер представляет собой управляемое состояние Blueprint расслоения. Контейнер Blueprint обеспечивает доступ ко всем управляемым компонентам . Это бобы, услуги и ссылки на службы. A Контейнер Blueprint можно получить, вставив предопределенный идентификатор компонента «blueprintContainer» .

Пример

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> 
Смежные вопросы