1、ByName自动装配
<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog" class="com.she.pojo.Dog"/>
<!--byName:会自动在容器上下文查找,和自己对象set方法后面的值对应的bean的id!-->
<!--当上下文找不到与set方法对应的beanid时不会报错但是值为null-->
<bean id="user" class="com.she.pojo.User" autowire="byName">
<property name="name" value="谁人骨"/>
</bean>
与下面代码效果一样
<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog" class="com.she.pojo.Dog"/>
<bean id="user" class="com.she.pojo.User">
<property name="name" value="谁人骨"/>
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
</bean>
注意点:
1.实体类中必须要有set方法
2.在实体类的set方法命名必须与bean中的id一致
3.保证bean的bean的id唯一
4.如果存在多个class相同的,如果有一个bean的id与set方法名一致可以正常运行,反之会报错
2、ByType自动装配
<bean id="cat" class="com.she.pojo.Cat"/>
<bean id="dog123" class="com.she.pojo.Dog"/>
<!--byType:会自动在容器上下文查找,和自己对象类型相同的bean!-->
<!--当存在两个及以上的相同对象类型的bean时会报错-->
<bean id="user" class="com.she.pojo.User" autowire="byType">
<property name="name" value="谁人骨"/>
</bean>
注意点:
1.当存在单个bean的id与set方法名不一致又想让其自动注入时可以使用ByType注入,但需要注意不能存在多个class一致的。
2.虽然在实体类的set方法命名必须与bean中的id可以不一致,但是必须保证需要bean的class唯一,并且这个bean需要和自动注入的属性的类型一致。