4

blueprint.xml のリスト プロパティに Bean のリストを挿入しようとしています ( Spring 構成で行うことと同様):

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>

別のクラス:

public class AnotherClass {
   private List<MyClass> myClasses;

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

Blueprint XML スキーマR4.2 エンタープライズ仕様(私たちが使用している) を調べたところ、適切なものは見つかりませんでした。しかし、これは非常に明白な使用例であるため、これが不可能であるとは信じられません。

ここで欠けているものと、これを行う方法について何か提案はありますか?

4

2 に答える 2

6

私は同じ問題に遭遇し、ここで答えを見つけました。ref 要素で、bean から component-id に変更します。

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

<bean id="anotherBean" class="AnotherClass">
  <property name="myClasses">
    <list>
      <ref component-id="myBean" />
    </list>
  </property>
</bean>
于 2014-01-24T13:35:36.727 に答える
1

リスト要素は、コード例に見られるような不正な形式の xml の問題に悩まされていなければ、実際にはネイティブに機能するはずです (リストの終了タグにスラッシュがないことのタイプミスを想定しています)。

これは、説明された使用法を含む非常に優れたスライドデッキです。

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

[以下の元の提案はまだ機能する可能性がありますが、必須ではありません]

ただし、他のスプリング スキーマを引き続き使用できるはずです。

util スキーマを追加してみてください。

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

次に、リスト要素の名前空間を指定します。

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

(Bean 名前空間は「util」を含む他のいくつかの名前空間を自動的にインポートするため、これは春にシームレスに機能します)

于 2013-05-29T20:06:43.267 に答える