spring:
Bean的显示装配
Cat Class:
package com.zz.pojo;
public class Cat {
public void shout() {
System.out.println("miao~");
}
}
Dog Class:
package com.zz.pojo;
public class Dog {
public void shout() {
System.out.println("wang~");
}
}
People Class:
package com.zz.pojo;
public class People {
private Cat Cat;
private Dog Dog;
private String name;
@Override
public String toString() {
return "People{" +
"Cat=" + Cat +
", Dog=" + Dog +
", name='" + name + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public com.zz.pojo.Cat getCat() {
return Cat;
}
public void setCat(com.zz.pojo.Cat cat) {
Cat = cat;
}
public com.zz.pojo.Dog getDog() {
return Dog;
}
public void setDog(com.zz.pojo.Dog dog) {
Dog = dog;
}
}
显示装配:xml
<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>
<bean id="people" class="com.zz.pojo.People">
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
<property name="name" value="阿三"/>
Bean.xml中自动装配:
1.byname:
** byname:会自动在容器上下文中去查找,和自己对象set方法后面的值对应的beanid!
<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>
<bean id="people" class="com.zz.pojo.People" autowire="byName">
<property name="name" value="李四"/>
</bean>
所以必须要加所要实现需求的类
本例子中还有:Cat,Dog二类:所以要加上
<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>
进一步来说:就是1.去找id=“people” class="com.zz.pojo.People"到People
2.去看Set方法后面的值有没有
<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>
与之对应的
public void setDog(com.zz.pojo.Dog dog) { Dog = dog; }
public void setCat(com.zz.pojo.Cat cat) { Cat = cat; }
有 便进行自动装配
2.bytype:
bytype:会自动在容器上下中查找,和自己对象属性类型相同的bean
<bean class="com.zz.pojo.People" autowire="byType">
<property name="name" value="李四"/>
</bean>
3.区别
byname: 需要保证bean的id为唯一的,并且这个bean需要和自动注入的属性的set方法的值一致。
bytype:需要保证bean的class为唯一,并且这个bean需要和指导注入的属性的类型一致。