Autowired和@Resource的区别

👌@Autowired和@Resource的区别

口语化答案

好的,面试官,Autowired 和 Resource 都是依赖注入注解。一个是 spring 框架带的,一个是 javaee 框架带的。Autowired 主要是类型注入,Resource 是按照名称注入,名称找不到的话,会按照类型进行注入。Autowired 当存在多个的时候,可以配合Qualifier 来进行使用。一般在实际工作中比较常用 Resource。以上。

题目解析

常考题,面试官喜欢问,其实两者比较好区分,记住一个是类型,一个是名称即可。然后就是提供方的不同。

面试得分点

类型注入,名称注入,指定名称。

题目详细答案

@Autowired和@Resource都是用于依赖注入的注解。

@Autowired

来源:Spring 框架。

注入方式:默认按类型注入。

用法:可以用于字段、构造器、Setter 方法或其他任意方法。

可选性:可以与@Qualifier一起使用,以指定具体的 Bean。

处理机制:Spring 的AutowiredAnnotationBeanPostProcessor处理@Autowired注解。

@Resource

来源:由 Java EE 提供。

注入方式:默认按名称注入,如果按名称找不到,则按类型注入。

用法:可以用于字段或 Setter 方法。

属性:可以指定name和type属性。

处理机制:Spring 的CommonAnnotationBeanPostProcessor处理@Resource注解。

详细比较

  1. 注入方式

@Autowired:默认按类型注入。如果需要按名称注入,可以结合@Qualifier注解使用。

@Resource:默认按名称注入。如果名称匹配失败,则按类型注入。

  1. 属性

@Autowired:没有name和type属性,但可以使用@Qualifier指定名称。

@Resource:有name和type属性,可以明确指定要注入的 Bean 名称或类型。

  1. 兼容性

@Autowired:是 Spring 框架特有的注解。

@Resource:是 Java 标准注解,兼容性更广,适用于任何支持 JSR-250 的容器。

  1. 使用场景

@Autowired:在 Spring 应用中更为常见,尤其是在需要按类型注入的场景中。

@Resource:在需要兼容标准 Java EE 规范的应用中更为常见,或者在需要明确指定 Bean 名称时使用。

原文: https://www.yuque.com/jingdianjichi/xyxdsi/bnn9a113lxo4uvpm

 wechat
天生我才必有用