bean的自动装配
自动装配是Spring满足bean依赖的一种方式,Spring在上下文中自动查找,并为bean装配属性
Spring中有三种装配方式
- 在xml中显示式配置
- 在Java中显式配置
- 隐式的自动装配
bean.xml
<?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 http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"
default-autowire="byName">
<bean id="hb" class="com.qian.test1.HammerBobby"/>
<bean id="cb" class="com.qian.test1.CannonBobby"/>
<bean id="player" class="com.qian.test1.Player" autowire="default"/>
</beans>
autowire自动装配
autowire="byName/byType/constructor/default/no"
只需要这样使用 <bean id="player" class="com.qian.test1.Player" autowire="xxx">
byName:通过名字装配,即自动在容器上下文查找和属性set方法后面的值对应id的bean对象进行装配,如setHb() 对应id="hb"的对象(若id="Hb"则不匹配)
byType:通过类型装配,即查找和属性类型相同的bean对象进行装配(但只允许上下文中只有一个可匹配类型对象,否则报错)
constructor:通过构造器装配,即尽量使用匹配参数最多的构造函数创建对象
default:可在配置中添加default-autowire="byName",如上所示,可批量设置装配方法
no:不会自动注入外部类,但如果有@Autowired等修饰则不受no影响