0
点赞
收藏
分享

微信扫一扫

@Autowired 和 @Resource 注解的区别

区别

@Autowired

@Resource

注解来源

Spring 框架提供的注解

Java EE 规范的注解

使用方式

可以用于字段、构造函数、方法

可以用于字段、setter 方法

依赖解析方式

通过类型匹配和名称匹配来解析注入的依赖对象

通过名称匹配来解析注入的依赖对象

兼容性

只能在使用 Spring 容器的环境中使用

可以在任何 Java EE 容器管理的 Bean 类中使用

使用范围

可以用于任何 Spring 托管的 Bean 类中(包括 XML 配置和注解配置)

可以用于任何 Java EE 容器管理的 Bean 类中(包括 EJB、Servlet、JSF 等)

指定依赖对象名称的方式

通过 @Qualifier 注解来指定依赖对象名称,也可以不指定。

通过 name 属性(或者 lookup 属性)来指定依赖对象名称,如果不指定则使用默认规则。(JDK 1.7 以上,也可以通过 type 属性指定类型)

是否支持可选依赖

支持通过 required 属性来指定是否要求必须注入依赖对象,默认为 true(必须注入)。

支持通过 required 属性来指定是否要求必须注入依赖对象,默认为 true(必须注入)。

总结:@Autowired 的优势在于其支持类型匹配和名称匹配,且可以用于任何 Spring 托管的 Bean 类中。同样,@Resource 的优势在于其遵循 Java EE 规范,兼容性更好,并且可以通过 name 属性来指定依赖对象的名称。对于选择哪种注解,取决于具体应用环境和需求。

举报

相关推荐

0 条评论