为person里面你的自定义类型的属性赋值
property:是手动赋值,自动赋值不再配置property
自动赋值:自动装配
autowire="default/no"
:不自动装配,不自动为car赋值
autowire的参数有三个:分别按照规则
第一个 autowire=“byName”:
比如:private Car car;
是以属性名(car)作为id去容器中找到这个组件,给它赋值;如果找不到就装配null.
相当于:ioc.getbean(“car”);
第二个:autowire=“byType”:
private Car car;
以属性的类型作为查找依据去容器中找到这个组件.
如果容器中有多个这个类型的bean,会报错:
NoUniqueBeanDefinitionException
没找到会赋值为null
相当于:ioc.getbean(Car.class)
第三个autowire=“constructor”:按照构造器进行赋值,指的是有参构造器
public car(Car car)
查找流程:1)、先按照有参构造器参数的类型进行装配,先找到有参构造器(成功就赋值),找到参数car是Car类型的,没有就赋值为null
2)、如果按照类型(Car)找到了多个bean,这个时候就用参数的名作为ID继续匹配,找到就装配;都找不到就赋值为null
3)、这个方法不会报错
<bean id = "person" class="com.guigu.bean.Person" autowire="byType">
<bean id = "person" class="com.guigu.bean.Person" autowire="byName">
<bean id = "person" class="com.guigu.bean.Person" autowire="constructor">