spring注解之—— @Resource与@ Autowired

@Resource@Autowired 都是 Java 框架中用于注入依赖的注解。尽管它们在功能上相似,但仍有一些区别:

@Resource

  • 来自 Java 的 javax.annotation 包(需要 Java EE 支持)。
  • 支持 nametype 属性,用于在注入时确定具体的依赖项。
    • @Resource(name = "beanName"):通过指定 bean 名称注入。
    • @Resource(type = SomeClass.class):通过指定 bean 类型注入。
  • 默认按名称注入(优先级高于类型)。

@Autowired

  • Spring 特有的注解,位于 org.springframework.beans.factory.annotation 包中。
  • 默认按类型注入(优先级高于名称)。
  • 可用于构造器、字段、setter 方法和普通方法。
  • 可搭配 @Qualifier 指定具体的 bean 名称。

区别

  1. 注入策略@Resource 默认按名称注入,而 @Autowired 默认按类型注入。
  2. 可用性@Resource 属于 Java EE 标准,需额外配置;@Autowired 则是 Spring 原生注解,无需其他配置。
  3. 细化注入@Autowired 配合 @Qualifier 使用时,更灵活细致;@Resource 相对简单直接。

在实际项目中选择注解时,可以根据项目需求和技术栈来决定。

哪个更常用

在 Spring 框架中,@Autowired 通常更常用,因为它是 Spring 框架的原生注解,使用起来方便且灵活。它的主要优势在于:

  1. 灵活性@Autowired 可用于构造器、字段、setter 方法以及普通方法,使得注入依赖的方式更加灵活。

  2. 类型优先:默认按类型注入,可配合 @Qualifier 按名称限定特定的 bean,支持类型安全。

  3. 标准化@Autowired 适用于任何 Spring 应用程序,直接提供与 Spring 框架深度集成的功能,无需额外配置。

相比之下,@Resource 在特定情况下使用较多,主要是在需要更精确控制的注入时。例如:

  1. 特定的名称注入@Resource 默认按名称注入,适用于需要明确名称的 bean 注入的场景。

  2. Java EE 集成:在 Java EE 环境中,它是一个标准注解,可以在更广泛的 Java 环境中使用。

因此,在 Spring 开发中 @Autowired 更为常用,但根据具体项目需求,可以灵活选择 @Resource

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值