假设有有两个类型一样的bean
<bean id="userDao1" class="x.y.userDao"/>
<bean id="userDao2" class="x.y.userDao"/>
然后在另外一个bean中用setter注入userDao1这个bean,以前是这种写法
<bean id="userService" class="x.y.userService">
<property name="userDao1" ref="userDao1"/>
</bean>
当使用自动装配的时候,即spring帮我们自动注入
<bean id="userService" class="x.y.userService" autowire="byName">
</bean>
byName是按名字装配,只有你这个userService这个bean类里有一个私有变量名字叫做userDao1,而且beanFactory里有一个名为userDao1的bean就行了
还有一种是byType,是按类型装配,楼上那两个bean都是x.y.userDao即同一种类型,所以如果选择byType就会报错,说不知道是要装配哪个,删了其中一个就可以。
我觉得自动装配的好处就是,不用写多代码,如果你在类里加了一个依赖,它能帮你自动装配,而不用去手动注入。但是得确保里面有这个bean名字,或者有唯一一个类型的bean,还是比较麻烦的。主要是这两种自动装配。还有一个default自动装配是在xsd那里帮你写好。