@Autowired 和 @Resource 的区别

如果对于一个接口, 实现类是一样的, resource 和 autowired 是一样的, 如果实现类不止一个, 就会有区别
区别:
1 来源不同, resource: javax.annotation ; autowired: bean factory annotation;
2 装配方式不同
@Resource:
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
3. 如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

    @Autowired:

默认按照 type 装配, 如果匹配不到实例, 就报错, 如果想通过 name 装配, 需要配合 @Qualifier 使用

你可能感兴趣的:(@Autowired 和 @Resource 的区别)