- 自动装配是Spring满足bean依赖的一种方式
- Spring会在上下文中自动寻找,并自动给Bean装配属性
Spring中有三种装配bean的方式
1.在XML文件中显示的配置(前面用的就是)
2.在Java中显示的配置(还没有遇到)
3.隐式的自动装配bean【重点】
4.1byName方式
需要保证所有bean的id唯一,并且该bean需要和自动注入对象的属性的set方法的值一致
<bean id="cat" class="com.dong.pojo.Cat">
<property name="name" value="小米"/>
</bean>
<bean id="dog" class="com.dong.pojo.Dog">
<property name="name" value="大米"/>
</bean>
<!--第一种自动装配方式,
byName:会自动在容器上下文找和自己对象set方法后面值所对应的bean的id
第二种自动装配方式,
byType:会自动在容器上下文找和自己对象属性类型相同的bean,id都可以省略
-->
<bean id="people" class="com.dong.pojo.People" autowire="byName">
<property name="name" value="乐多"/>
</bean>
4.2byType方式
需要保证所有的bean的class唯一,并且该bean需要和自动注入对象的属性的类型一致
<bean class="com.dong.pojo.Cat">
<property name="name" value="小米"/>
</bean>
<bean class="com.dong.pojo.Dog">
<property name="name" value="大米"/>
</bean>
<!--第二种自动装配方式,
byType:会自动在容器上下文找和自己对象属性类型相同的bean,id都可以省略
-->
<bean id="people" class="com.dong.pojo.People" autowire="byType">
<property name="name" value="乐多"/>
</bean>
4.3注解方式(@Autowried 、@Resource)
二者的异同点: 都是用来自动装配的,都可以放在属性字段上
前者通过byType的方式实现,必须要求这个对象存在(常用)
后者默认通过byName的方式实现,如果找不到name,则通过byType的方式实现,如果两个都没有,则报错。