0

ここに私の質問を説明する投稿からのいくつかのコードがあります:

インターフェース:

package org.better.place

public interface SuperDuperInterface{
    public void saveWorld();
}

実装:

package org.better.place

import org.springframework.stereotype

public class SuperDuperClass implements SuperDuperInterface{
     public void saveWorld(){
          System.out.println("Done");
     }
}

クライアント:

package org.better.place

import org.springframework.beans.factory.annotation.Autowire;

public class SuperDuperService{

       private SuperDuperInterface superDuper;

       public void doIt(){
           superDuper.saveWorld();
       }

       public void setSuperDuper(SuperDuperInterface superDuper) {
         this.superDuper = superDuper;
       }
}

私の質問は、Spring config で Bean を構成するにはどうすればよいですか? @Autowiredなどの注釈を使用したくありません。

私はそれが次のようなものになると思います:

<bean id="superService" class="org.better.place.SuperDuperService">
  <property name="superDuper" ref="superWorker"
</bean>

<bean id="superWorker" class=?????? parent=???????? >
</bean>
4

2 に答える 2

1

もちろん、実装クラスをインスタンス化する必要があります。

<bean id="superWorker" class="org.better.place.SuperDuperClass"/>

parent繰り返し宣言したくない共通のプロパティを持つ複数の Bean を作成する場合にのみ属性が必要になるため、具体的な Bean 定義が参照できる抽象的な親 Bean 定義に移動します。にいくつかのプロパティがある
と仮定します。SuperDuperClass

<bean id="superWorkerPrototype" abstract="true" 
      class="org.better.place.SuperDuperClass">
    <property name="prop1" value="value1"/>
    <property name="prop2" value="value2"/>
</bean>

<bean id="superWorker1" parent="superWorkerPrototype"
      class="org.better.place.SuperDuperClass">
    <property name="prop3" value="foo"/>
</bean>

<bean id="superWorker2" parent="superWorkerPrototype"
      class="org.better.place.SuperDuperClass">
    <property name="prop3" value="bar"/>
</bean>

これにより、両方のインスタンスで と の値は同じになりますが、 の値はprop1異なりprop2ますprop3

于 2013-05-15T14:32:32.317 に答える
0

実装クラスの完全修飾名を指定するだけでよく、parent属性を指定する必要はありません。SuperDuperClassSpring は、 のインスタンスを のsuperDuperフィールドに割り当てることができるかどうかを自動的に検出します。SuperDuperService

<bean id="superWorker" class="org.better.place.SuperDuperClass" >
</bean>
于 2013-05-15T14:34:11.907 に答える