Springで ”

by Autowiring by Name

“は、Beanの名前が他のBeanプロパティの名前と同じ場合は、自動配線します。

たとえば、 “customer” beanが “address”プロパティを公開している場合、Springは現在のコンテナ内の “address” beanを見つけ、それを自動的に配線します。一致が見つからない場合は、何もしないでください。

この機能は、以下のように `autowire =” byName “`で有効にすることができます:

    <!-- customer has a property name "address" -->
    <bean id="customer" class="com.mkyong.common.Customer" autowire="byName"/>

    <bean id="address" class="com.mkyong.common.Address" >
        <property name="fulladdress" value="Block A 888, CA"/>
    </bean>

Spring自動配線の例を名前でご覧ください。

1.ビーンズ

2つの豆、顧客と住所。

package com.mkyong.common;

public class Customer
{
    private Address address;
   //...
}

package com.mkyong.common;

public class Address
{
    private String fulladdress;
   //...
}

2.スプリング配線

通常、このようなref属性を使用してBeanを明示的に配線します。

    <bean id="customer" class="com.mkyong.common.Customer" >
        <property name="address" ref="address"/>
    </bean>

    <bean id="address" class="com.mkyong.common.Address" >
        <property name="fulladdress" value="Block A 888, CA"/>
    </bean>


出力

Customer[address=Address[fulladdress=Block A 888, CA]]....

**  autowire by name enabled ** を使用すると、プロパティタグをもう宣言する必要はありません。 "address" beanが "customer" beanのプロパティと同じ名前(address)である限り、Springはそれを自動的に結び付けます。

<bean id="customer" class="com.mkyong.common.Customer" autowire="byName"/>

<bean id="address" class="com.mkyong.common.Address" >
    <property name="fulladdress" value="Block A 888, CA"/>
</bean>

__出力__

Customer[address=Address[fulladdress=Block A 888, CA]]…​.

別の例を見ると、今回は配線が失敗し、 “addressABC”というBeanが “customer”というBeanのプロパティ名と一致しません。

    <bean id="customer" class="com.mkyong.common.Customer" autowire="byName"/>

    <bean id="addressABC" class="com.mkyong.common.Address" >
        <property name="fulladdress" value="Block A 888, CA"/>
    </bean>


出力

Customer[address=null]....

=== ソースコードをダウンロードする

ダウンロードする -  link://wp-content/uploads/2011/06/Spring-AutoWiring-by-Name-Example.zip[Spring-AutoWiring-by-Name-Example.zip](6 KB)

link://tag/spring/[spring]link://タグ/wiring/[wiring]