原本是这样的:
<bean id="cat" class="com.pojo.Cat"/>
<bean id="dog" class="com.pojo.Dog"/>
<bean id="people" class="com.pojo.People">
<property name="name" value="狂徒张三"/>
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
</bean>
现在是这样的:
<bean id="cat" class="com.pojo.Cat"/>
<bean id="dog" class="com.pojo.Dog"/>
<bean id="people" class="com.pojo.People" autowire="byName">
<property name="name" value="狂徒张三"/>
</bean>
byName:
会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanid !
autowire=“byName”
byType:
会自动在容器上下文中查找,和自对象属性类型相同的bean !
autowire=“byType”
<bean id="cat" class="com.pojo.Cat"/>
<bean class="com.pojo.Dog"/>
<bean id="people" class="com.pojo.People" autowire="byName">
<property name="name" value="狂徒张三"/>
</bean>
byname的时候,需要保证所有bean的id唯一, 并且这个bean需要和自动注入的属性的set方法的值一致!
bytype的时候,需要保证所有bean的class唯一, 并且这个bean需要和自动注入的属性的类型-致!
注解自动装配
在People.java中
需要set方法的属性:
@Autowired
直接在属性上使用即可!也可以在set方式上使用!
使用Autowired 我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC (Spring)容器中存在
如果显示定义了Autowired 的required属性为false,说明这个对象可以为null,
@Autowired(required = false)
小结
如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候、
我们可以使用@Qualifier(value=“xxx”)去配置@Autowired的使用,指定一个唯一的bean对象注入!