2013-05-29 3 views
3

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

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

AnotherClass:

public class AnotherClass { 
    private List<MyClass> myClasses; 

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

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

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

ответ

1

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

Вот очень хороший слайд колода с описанной использования:

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

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

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

Try добавления UTIL схемы:

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

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

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

(это работает плавно весной, так как фасоль импорт пространства имен несколько других имен, в том числе "Util" , автоматически)

5

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

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

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