public class Customer
{
private Address address;
}
public class Address
{
private String fulladdress;
}
REFによって指定1.デフォルトのアセンブリ、
<bean id="customer" class="org.qww.common.Customer">
<property name="person" ref="person" />
</bean>
<bean id="person" class="org.qww.common.Person" />
この設定方法は、デフォルト値です。
2.アセンブリ名、BYNAME
<bean id="customer" class="org.qww.Customer" autowire="byName" />
<bean id="address" class="org.qww.common.Address" >
<property name="fulladdress" value="YiLong Road, CA 188" />
</bean>
顧客の属性名と同じアドレスは、アドレスの意志豆注射として、住所が同じ名前でないときに注入することができない、以下のとおりです。
<bean id="customer" class="org.qww.common.Customer" autowire="byName" />
<bean id="addressABC" class="org.qww.common.Address" >
<property name="fulladdress" value="Block A 888, CA" />
</bean>
お客様は、出力は次のようになります。
Customer [address=null]
タイプ3.注射、byType
<bean id="customer" class="org.qww.Customer" autowire="byType" />
<bean id="address11" class="org.qww.common.Address" >
<property name="fulladdress" value="YiLong Road, CA 188" />
</bean>
タイプとaddress11ます注入型に注入することにより、同じアドレスで豆address11カスタマーアドレスの種類、お客様の出力は次のようになります。
Customer [address=Address [fulladdress=YiLong Road, CA 188]]
場合は、コンテナ例外がスローされます自動設定の種類によってアドレスBeanの2種類があります。
<bean id="customer" class="org.qww.Customer" autowire="byType" />
<bean id="address11" class="org.qww.common.Address" >
<property name="fulladdress" value="YiLong Road, CA 188" />
</bean>
<bean id="address12" class="org.qww.common.Address" >
<property name="fulladdress" value="YiLong Road, CA 188" />
</bean>
初期化コンテナは、次の例外がスローされます。
Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException:
...
No unique bean of type [com.yiibai.common.Ability] is defined:
expected single matching bean but found 2: [steal, invisible]; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException:
コンストラクタ・インジェクションすることにより、だけでなく、噴射式によって4、コンストラクタ
次のようにデフォルトコンストラクタは、注入されたBeanを呼び出します。
public class SpringHelloWord {
private Hello hello;
private String say;
private Hello2 hello2;
public String getSay() {
return say;
}
public void setSay(String say) {
this.say = say;
}
public SpringHelloWord() {
System.out.println("1");
}
public SpringHelloWord(Hello hello) {
this.hello=hello;
System.out.println("2");
}
public SpringHelloWord(Hello hello,String say) {
this.hello=hello;
this.say=say;
System.out.println("3");
}
public SpringHelloWord(Hello hello,Hello2 hello2) {
this.hello=hello;
this.hello2=hello2;
System.out.println("4");
}
public void say() {
System.out.println("Spring Hello Word");
}
public Hello getHello() {
return hello;
}
public void setHello(Hello hello) {
this.hello = hello;
}
public Hello2 getHello2() {
return hello2;
}
public void setHello2(Hello2 hello2) {
this.hello2 = hello2;
}
}
次のようにすると設定は次のとおりです。
<bean id="helloBean" class="Spring.SpringHelloWord" autowire="constructor">
</bean>
<bean id="hello" class="Spring.Hello">
</bean>
helloBean、出力2を取得する場合、コールはSpringHelloWord(ハローハロー)コンストラクタです。
次のようにすると設定は次のとおりです。
<bean id="helloBean" class="Spring.SpringHelloWord" autowire="constructor">
</bean>
<bean id="hello" class="Spring.Hello">
</bean>
<bean id="hello2" class="Spring.Hello2">
</bean>
コールはSpringHelloWord(ハローハロー、Hello2のhello2)です。
コンストラクタ注入は注入の種類によって呼び出されているため、そう注入豆の2種類が存在する場合に例外をスローします。
5.autodetect
デフォルトコンストラクタが見つかった場合、「構造の自動組立」を使用し、それ以外の場合は、「タイプによる自動アセンブリを。」を使用