@Autowire和@resource的区别

说明:

   @Autowired 和 @Resource 都是 Spring 框架中的注解,用于实现依赖注入(Dependency Injection,DI)。

区别:

  1. 来源不同:@Autowired 来自 Spring IoC 容器,而 @Resource 来自于 Java 。@Autowired 通常从构造器方法中的参数获取依赖,而 @Resource 则是从另一个类中注入。
  2. 依赖查找顺序不同:@Autowired 是先按类型(byType)查找,如果存在多个 Bean,再按名称(byName)进行查找;而 @Resource 是先按名称(byName)查找,如果存在多个 Bean,再按类型(byType)进行查找。
  3. 支持的参数不同:@Autowired 支持参数为 null,而 @Resource 不支持。@Autowired 可以接受多个参数,用于指定多个需要注入的对象;而 @Resource 只能接受单个参数,用于指定需要注入的特定属性或方法。
  4. @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false
  5. 方法作用不同:@Autowired 用于自动装配 Bean,而 @Resource 用于将一个类的属性或方法注入到另一个类中。

注意@Autowire@Qualifier配合使用效果也是和@Resource一样。


@Autowired(required = false) @Qualifier("commonExecutorPool")
private ExecutorService commonExecutorPool;

@Resource(name = "commonExecutorPool")
private ExecutorService commonExecutorPool;

@resource注解通常用于以下场景:

  1. 定义一个 Spring Bean,该 Bean 依赖于其他 Bean。
  2. 通过注解配置 Bean,避免编写冗长的字符串或使用大括号等占位符。
  3. 当需要在多个组件之间共享数据源时,可以使用 @Resource 注解指定共享资源。
  4. 当需要注入一个可序列化的对象(如文件、数据库连接等)时,可以使用 @Resource 注解将其注入到方法或属性上,实现依赖的自动注入。
  5. 当需要自定义一个可复用的组件时,可以使用 @Resource 注解定义一个共享的静态资源。

总结:  

   @Autowired 主要用于自动装配 Bean,而 @Resource 主要用于将一个类的属性或方法注入到另一个类中,实现依赖注入。总之,@Resource  注解可以帮助我们简化 Bean 依赖、注入数据源等操作,提高开发效率和代码质量。同时,在使用过程中,也需要根据具体情况选择合适的使用场景和方式,以发挥其最大的价值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你才是臭弟弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值