1

私が見つけた自動配線のすべての例では、例は、たとえば<bean> autowireに設定された1つの属性に関するものbyNameであり、自動配線によって設定されることになっているプロパティ値は1つだけです。

私の質問は、<bean>自動配線で設定したい複数のプロパティがある場合はどうなりますか?誰もその状況を説明していないようです。autowireBeanに複数のプロパティを設定できるかどうか、または使用する必要があるかどうかを誰かが説明できますか?以下は、自動配線によって顧客Beanのアカウントとクレジットのプロパティを設定したい状況の例です。

<beans>
    <bean name="customer" class="ultratech.com.Customer" autowire="byName">
         <bean name="account"/>
         <bean name="credit>
    </beam>

    <bean name="account" class="ultratech.com.Account"/>
    <bean name="credit" class="ultratech.com.Credit"/>
</beans>

また、間違っている場合は訂正してください。ただし、アノテーション()を使用すると、Beanの任意のプロパティに個別@Autowireに追加できるため、問題は簡単に解決されます。@Autowire

4

1 に答える 1

2

[編集:更新された質問を反映するように編集]

あなたの質問は今、はるかに明確です。あなたは(私があなたの考えに正しく従えば)あなたは価値autowire="byName"の代わりに豆の名前を提供することになっていると思っているようです。byNameそれは正しくありません。autowire属性は、いくつかの可能な値を取ることができbyName、それらの1つです。ここが好きautowirebyNameなると:

<bean name="someBean" class="foo.bar.Baz" autowire="byName />

次に、SpringはsomeBeanfoo.bar.Bazクラス)のすべてのフィールドを調べ、このオブジェクトのすべてのフィールドを名前ごとにワイヤリングしようとします。つまり、(あなたの場合)Customerクラスにフィールドがある場合、Springはそのコンテキストを調べて、CustomerBeanに注入するaccount名前のBeanを見つけようとします。account

そのようなBeanを2つ定義する場合:

 <bean name="customer" class="ultratech.com.Customer" autowire="byName" />
 <bean name="account" class="ultratech.com.Account" />

顧客がこの方針に沿ったクラスである場合、あなたは良いことです:

public class Customer {
    (...)
    private Account account;
    (...)
}

Customerクラスにaccountおよびcreditという名前のフィールドがあると仮定すると、XMLコードスニペットは次のようになります。

<beans>
    <bean name="customer" class="ultratech.com.Customer" autowire="byName" />
    <bean name="account" class="ultratech.com.Account" />
    <bean name="credit" class="ultratech.com.Credit" />
</beans>

「byName」自動配線とは別に、次の自動配線を行うことができます。

  1. いいえ-デフォルト-自動配線なし
  2. byType-プロパティタイプのBeanを探します-注意してください-ただし、このタイプのBeanは1つだけbyTypeの自動配線が許可されています。複数ある場合は例外が発生します
  3. コンストラクター-byTypeと同じように機能しますが、コンストラクターパラメーターのみを検索します。すべてのコンストラクターパラメーターは、それぞれのタイプのBeanを1つだけ満たす必要があります。

詳細については、Springリファレンスを参照してください: http ://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-factory-autowire

于 2013-01-17T16:56:08.340 に答える