spring的三种注入方式

1.通过bean的property子元素指定注入,这种方式比较常见
2.通过注解,需要先开启注解,然后要注入的需要通过@Autowired获取其他几个注解【其他注解可查看spring官方文档】
3.自动注入,该方式并不是十分推荐,因为灵活性等问题。
这自动注入可以再bean级别或者beans级别配置,如果都配置了,bean级别高于beans

<beans  default-autowire="byName">如果这样配置的话,那么spring会根据属性名,自动映射成对应的beanId

如在一个action中有一个
public void setSysvariableManager(SysvariableManager sysvariableManager) {
this.sysvariableManager = sysvariableManager;
}

那么应该注入的bean是哪个,spring会在启动的时候自动识别并发现

bean级别的配置<bean id="Client_Attachment" class="cn.com.opendata.attachment.ClientAttachmentApplication" autowire="default">那么它的字属性就会自动注入。

他的值支持如下几种
1、 No:即不启用自动装配。Autowire默认的值。

2、 byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。

3、 byType:通过属性的类型查找JavaBean依赖的对象并为其注入。比如类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printer的bean,使用Seter方法为其注入。

4、 constructor:通byType一样,也是通过类型查找依赖对象。与byType的区别在于它不是使用Seter方法注入,而是使用构造子注入。

5、 autodetect:在byType和constructor之间自动的选择注入方式。

6、 default:由上级标签<beans>的default-autowire属性确定。

注意:在配置bean时,<bean>标签中Autowire属性的优先级比其上级标签高,即是说,如果在上级标签中定义default-autowire属性为byName,而在<bean>中定义为byType时,Spring IoC容器会优先使用<bean>标签的配置。

你可能感兴趣的:(spring)