1. 来源不同:
@Autowired是Spring定义的注解,@Resource是Java定义的注解,Java250规范
2. 依赖查找顺序不同:
首先依赖注入是通过先在SpringIOC容器中查找对象,再将对象注入到当前类中。而查找的分为两种实现,按名称byName和按类型byType查找,@Autowired是先根据类型查找,如果存在多个Bean,再根据名称查找,如果想按名称装配,可以结合@Qualifier注解一起使用。@Resource是先根据名称查找,如果根据名称查不到,再根据类型进行查找。
3. 注入方式不同:
@Autowired 支持:属性注入、构造方法注入、Setter注入
@Resource 支持:属性注入、Setter注入
4. 支持的参数不同:
@Autowired 只支持设置1个参数,required
@Resource 支持设置7个参数
比较:
@Autowired注解功能略强大。支持优先注入,可以配置允许Bean不存在。
@Resource更加通用,因为它是个规范,除了Spring,其他框架也可使用。