一、自动装配概念
自动赋值(自动装配):仅限于对自定义类型的属性有效;自动的为属性赋值
二、手动赋值
<bean id="car" class="com.njf.spring.bean.Car">
<property name="carName" value="宝马"></property>
<property name="color" value="白色"></property>
</bean>
<!--
为 Person 里面的自定义类型的属性赋值
property:手动赋值
-->
<bean id="person01" class="com.njf.spring.bean.Person">
<property name="car" ref="car"></property>
</bean>
三、自动赋值
1、装配模式
2、自动装配
3、选用建议
4、代码示例
<!--
自动赋值(仅限于对自定义类型的属性有效)
autowire="default/no" :不自动装配,不自动为属性赋值
//按照某种规则自动装配
autowire="byName":按照名字
private Car car;以属性名(car)作为 id 去容器中找到这个组件,给他赋值;
如果找不到就装配 null。
car = ioc.getBean("car");
autowire="byType":按照类型
private Car car;以属性的类型作为查找依据去容器中找到这个组件,给他赋值;
car = ioc.getBean(Car.class);
(1)如果容器中有多个这个类型的组件,报错:NoUniqueBeanDefinitionException;
(2)如果没有找到,装配 null。
autowire="constructor":按照构造器进行赋值
public Person(Car car)
(1)先按照有参构造器参数类型进行装配,没有就直接为组件装配 null 即可;
(2)如果按照类型找到了多个,参数的名作为 id 继续匹配,找到就装配,找不到就装配 null,不会报错
自动的为属性赋值。
private List<Book> books; 容器可以把容器中所有的 Book 封装List赋值给这个属性
-->
<bean id="person02" class="com.njf.spring.bean.Person" autowire="byName">
</bean>