@Autowired和@Resource的区别:

@Autowired@Resource 都是 Java 中用于依赖注入(Dependency Injection)的注解,但它们有一些区别:

  1. 来源:

    • @Autowired 是 Spring 框架特有的注解,它通过类型(by type)进行自动装配。当 Spring 容器发现一个需要依赖注入的属性(或构造方法、方法参数等),它会尝试在容器中查找匹配的 bean,并将其注入进来。

    • @Resource 是 Java EE 的标准注解,被包含在 javax.annotation 包中,可以在任何 Java EE 或 Spring 应用中使用。它是基于名称(by name)进行注入的,也可以指定通过名称查找注入的 bean。

  2. 注入方式:

    • @Autowired 默认按照类型进行注入。如果存在多个类型匹配的 bean,可以结合 @Qualifier 注解或者使用 @Primary 注解来指定首选的 bean。

    • @Resource 默认按照名称进行注入,可以通过 name 属性指定要注入的 bean 名称。

  3. 可选性:

    • @Autowired 是 Spring 框架的一部分,更加强大且灵活,支持 by type、by name、by qualifier 等多种注入方式,并且支持 @Primary@Qualifier 来解决自动装配的歧义性。

    • @Resource 是 Java EE 的标准,也可以在 Spring 中使用,但功能相对较少。它只支持 by name 方式的注入,并且不支持 @Primary@Qualifier

  4. 适用范围:

    • @Autowired 是 Spring 框架的核心注解,用于处理 Spring 管理的 bean 的依赖注入。

    • @Resource 是 Java EE 的一部分,可以在各种 Java EE 兼容的环境中使用,但在 Spring 中,一般推荐使用 @Autowired@Inject(JSR-330 标准)来完成依赖注入。

总结来说,主要的区别在于注入方式和框架依赖。在使用 Spring 框架时,通常首选使用 @Autowired 进行依赖注入,因为它更灵活,并且能够支持更多的自动装配方式。而 @Resource 则是一个通用的 Java EE 标准注解,用于简单的依赖注入场景。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值