一 :在 Spring 配置文件中对象名和 ref=”id” ,id 名相同使用自动注入,可以不配置<property/>,对应的注解@Autowired的作用
二: 两种配置办法
(1) 在<bean>中通过 autowire=”” 配置,只对这个<bean>生效
(2) 在<beans>中通过 default-autowire=””配置,表当当前文件中所有<bean>都是全局配置内容
三:autowired的取值
3.1 default: 默认值,根据全局 default-autowire=””值.默认全局和局部都没有配置情况下,相当于 no
3.2 no: 不自动注入
3.3 byName: 通过名称自动注入.在 Spring 容器中找类的 Id,如果有一个bean的id与当前bean的属性的变量名一样,就注入
3.4 byType: 根据类型注入.
3.4.1 spring 容器中不可以出现两个相同类型的<bean>
3.5 constructor: 根据构造方法注入.
3.5.1 提供对应参数的构造方法
3.5.2 底层使用 byName, 构造方法参数名和其他<bean>的 id相同.
<bean id="people" class="com.spring.pojo.People" autowire="constructor">
<!-- <property name="teacher" ref="teacher"></property> -->
</bean>
<bean id="teacher" class="com.spring.pojo.Teacher"></bean>
如果bean people这个bean要注入teacher这个bean ,且采用contructor方式,那么bean people代表的类必须有一个构造方法,且构造方法中必须有一个参数,参数的类型是 bean teacher对应的类的类型,且参数名称必须是“teacher”,即被注入bean的id定,要与接受注入的类的构造方法的参数一样,所以本质是byName