Spring05:自动装配
自动装配说明
-
自动装配是使用spring满足bean依赖的一种方法
-
spring会在应用上下文中为某个bean寻找其依赖的bean。
环境搭建
Cat.java
public class Cat {
public void shout() {
System.out.println("miao~");
}
}
Dog.java
public class Dog {
public void shout() {
System.out.println("wang~");
}
}
User.java
public class User {
private Cat cat;
private Dog dog;
private String str;
}
不使用自动装配的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dog" class="com.kuang.pojo.Dog"/>
<bean id="cat" class="com.kuang.pojo.Cat"/>
<bean id="user" class="com.kuang.pojo.User">
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
<property name="str" value="qinjiang"/>
</bean>
</beans>
byName
autowire byName (按名称自动装配)
修改bean配置,增加一个属性 autowire="byName"
<bean id="user" class="com.kuang.pojo.User" autowire="byName">
<property name="str" value="qinjiang"/>
</bean>
小结:
当一个bean节点带有 autowire byName的属性时。
1、将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写的字符串,即cat。
2、去spring容器中寻找是否有此字符串名称id的对象。
3、如果有,就注入此对象;如果没有,会报空指针异常。
byType
autowire byType (按类型自动装配)
-
按类型自动装配,会从spring容器中找到其所依赖的类型的bean进行注入
-
如果spring容器中有多个此类型的bean,会报不唯一的异常。
-
按类型自动装配,也需要提供set方法
spring学习

浙公网安备 33010602011771号