@Resource注解
- 是JSEE的注解,是由JSR-250规范定义的
- 有两个比较重要的属性,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型,默认是是按照byName进行Bean装配的
- 可以用在filed属性上和setter方法上,但是不能用在构造器上。
@Resource注解装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
@Autowired注解
- 默认是按照byType进行装配的,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。
- required属性值默认为true,如果为true的话,没有匹配的类则抛出异常;如果为false,则表示不是强制必须能够找到相应的类,无论是否注入成功,都不会抛错。
- 可以用在filed属性上和setter方法上,也可以用在构造器上。
- 如果依赖组件有多个实现,@Autowired注解可以搭配@Qualifier注解以达到精准匹配。