显式装配spring
自动装配Bean属性ui
一共有四种自动装配类型(须要在Bean配置里添加autowire属性来指定用哪一种类型)
spa
byName-把与Bean的属性具备相同名字或ID的其余Bean自动装配到Bean的对应属性中。若是没有跟属性的名字相匹配的Bean,则该属性不进行装配。--实际上对比的是Bean ID。io
byType-把与Bean的属性具备相同类型的其余Bean自动装配到Bean的对应属性。若是没有跟属性的类型相匹配的Bean,则该属性不被装配。局限性:若是Spring找到多个Bean,它们的类型都与须要自动装配的属性的类型相匹配,这个时候SPring不会猜想哪个更适合,而是抛出异常。不过提供了以下参数来指定用哪一个Bean来注入。<bean>元素的primary属性。若是该值为true,那么该Bean将比其余候选Bean优先被选择。默认都是true。若是但愿排除某些Bean做为候选者,那么能够设置它们的autowire-candidate属性为false.则它们都会被忽略做为候选Bean.require
constructor-把与Bean的构造器入参具备相同类型的其余Bean自动装配到Bean构造器的对应入参中。配置
autodetect-首先尝试使用constructor进行自动装配,若是失败,则再尝试使用byType进行自动装配。
date
使用注解装配
引用
2.5引入注解装配,与在XML中使用autowire属性自动装配无太大差异。默认禁用注解装配。若需使用,则须要在spring中启用它。<context:annotation-config/>.spring支持以下几种用于自动装配的注解
方法
Spring自带的@Autowired注解im
JSR-330的@Inject注解
JSR-250的@Resource注解
1:使用@Autowired注解:能够标注于setter方法,标注于须要自动装配Bean引用的任意方法;甚至能够标注构造器;还能够直接标注属性,并删除setter方法,甚至都不会受限于private关键字。
有两种局限:没有匹配的Bean,或者存在多个匹配的Bean.
a)可选的自动装配。 默认状况下,@Autowired具备强契约特征,其所标注的属性或参数必须是可装配的。若是没有Bean能够装配到@Autowired锁标注的属性或参数中,自动装配就会失败。属性亦可设置成null,经过设置该注解的required属性为false来配置自动装配是可选的。
b)限定歧义性的依赖:当有多个Bean都彻底知足装配条件,而且均可以被装配到属性或参数中的状况时,为了帮助@Autowired鉴别出哪个Bean才是所须要的,可使用限定器注解@Qualifier。咱们亦能够自定义限定器(Qualifier)