Конфигурация OSGi Blueprint: вставка списка ссылок на компоненты

Я пытаюсь внедрить список bean-компонентов в свойство списка в моем файле blueprint.xml (аналогично тому, что вы сделали бы в Конфигурация Spring):

план.xml:

<blueprint
  xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
    http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

<bean id="myBean" class="MyClass" />

<bean id="anotherBean" class="AnotherClass">
  <property name="myClasses">
    <list>
      <ref bean="myBean" />
    <list>
  </property>
</bean>

</blueprint>

Другой класс:

public class AnotherClass {
   private List<MyClass> myClasses;

   public void setMyClasses(List<MyClass> classes) {
     this.myClasses = classes;
   }
}

Я просмотрел схему Blueprint XML и стандарт предприятия R4.2 (который мы используем ) и ничего подходящего не нашел. Но это настолько очевидный вариант использования, что я не могу поверить, что это невозможно.

Есть предложения, что мне здесь не хватает и как это сделать?


person Jens    schedule 29.05.2013    source источник


Ответы (2)


Я столкнулся с той же проблемой и нашел ответ здесь. В элементе ref измените bean-компонент на идентификатор компонента.

<bean id="myBean" class="MyClass" />

<bean id="anotherBean" class="AnotherClass">
  <property name="myClasses">
    <list>
      <ref component-id="myBean" />
    </list>
  </property>
</bean>
person vmaroli    schedule 24.01.2014

Элемент списка на самом деле должен работать изначально, если вы не страдаете от проблемы с неверным форматом xml, обнаруженной в примере кода (при условии опечатки для отсутствующей косой черты в теге закрывающего списка).

Вот очень хорошая презентация с описанием использования:

http://www.slideshare.net/gnodet/osgi-blueprint-services-1622424

[исходное предложение ниже может все еще работать, но не должно требоваться]

Однако вы все равно должны иметь возможность использовать другую схему Spring.

Попробуйте добавить схему util:

xmlns:util="http://www.springframework.org/schema/util"

а затем пространство имен элемента списка:

<util:list>
    <ref bean="myBean" />
</util:list>

(это работает без проблем весной, потому что пространство имен beans автоматически импортирует несколько других пространств имен, включая «util»)

person Ray    schedule 29.05.2013