@Autowired和@Resource 的区别是:1、来源不同;2、依赖查找顺序不同;3、支持的参数不同;4、依赖注入的支持不同。@Autowired是Spring中的一个注释,这个注释的功能就是为我们注入一个定义好的 bean。
一、@Autowired和@Resource 的区别
1、来源不同
@Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250。
2、依赖查找顺序不同
依赖注入的功能,是通过先在 Spring IoC 容器中查找对象,再将对象注入引入到当前类中。而查找有分为两种实现:按名称(byName)查找或按类型(byType)查找,其中 @Autowired 和 @Resource 都是既使用了名称查找又使用了类型查找,但二者进行查找的顺序却截然相反。
@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找,@Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找。
3、支持的参数不同
@Autowired 和 @Resource 在使用时都可以设置参数,但二者支持的参数以及参数的个数完全不同,其中 @Autowired 只支持设置一个 required 的参数,而 @Resource 支持 7 个参数。
4、依赖注入的支持不同
@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入。
延伸阅读:
二、什么是 @Autowired
@Autowired是Spring中的一个注释,这个注释的功能就是为我们注入一个定义好的 bean。
这个注释是属于 Spring 的容器配置的一个注释,与它同属容器配置的注释还有:@Required,@Primary, @Qualifier 等等。因此 @Autowired 注释是一个用于容器 ( container ) 配置的注释。
autowire,这个单词的意思是自动装配的意思。在 Spring 的世界当中,自动装配指的就是使用将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。
@Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。@Autowired 默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。
以上就是关于@Autowired和@Resource的区别的内容了,希望对大家有帮助。