@Autowire
- spring提供
- 属性:required
- 作用范围:字段、setter方法、构造器上
- 默认按类型(by-type)装配且对象不可为空(可设置 required=false 允许对象为空)
- 结合 @Qualifier(“beanName”) 可实现按名称装配
@Resource
-
jdk提供
-
属性:name、type
-
作用范围:字段、setter方法
-
默认按名称(by-name)装配,名称可以通过name属性指定
- 未指定name的情况下:
- 当注解在字段上时,默认取name=字段名称装配
- 当注解在setter方法上时,默认取name=属性名称装配
- 若按照名称未匹配,则自动按类型匹配
- 未指定name的情况下:
-
装配顺序
- 同时指定name和type属性:则找到唯一匹配的bean装配,未找到则抛异常
- 指定name属性:按照名称(by-name)装配,未找到则抛异常
- 指定type属性:按照类型(by-type)装配,未找到或者找到多个则抛异常
- 未指定name属性又未指定type属性:先按照名称(by-name)装配,如果未找到,则按照类型(by-type)装配