@AutoWired 与 @Resource有什么区别?

@Resource@Autowired 都是 Java 中用于进行依赖注入的注解,但它们有一些区别和相同点。

相同点:

  1. 用途:两者都用于实现依赖注入,即通过注解的方式将一个 Bean 注入到另一个 Bean 中,或将容器中的其他资源注入到 Bean 中。

  2. 自动装配:默认情况下,两者都支持自动装配,可以根据类型进行匹配注入。

区别:

  1. 来源

    • @Resource 是 Java EE 提供的注解,在 javax.annotation 包下,可以用于注入任何 Java EE 管理的对象或者是用户自定义的对象。
    • @Autowired 是 Spring 提供的注解,在 org.springframework.beans.factory.annotation 包下,主要用于注入 Spring 管理的 Bean。
  2. 注入方式

    • @Resource 默认按照 Bean 名称进行装配,如果找不到与名称匹配的 Bean,则按照类型进行匹配。它支持按照名称和类型进行注入。
    • @Autowired 默认按照类型进行装配,如果找不到与类型匹配的 Bean,则会抛出异常。但可以通过 @Qualifier 注解配合使用指定 Bean 名称来进行装配。
  3. 可选性

    • @Resource 注解的 required 属性默认为 true,表示被注入的 Bean 必须存在,否则会抛出异常。
    • @Autowired 注解默认情况下是必须的,但可以通过将其的 required 属性设置为 false 来实现可选注入。
  4. 所属标准

    • @Resource 是 Java EE 的标准注解,因此在一些非 Spring 环境中也可以使用。
    • @Autowired 是 Spring 的特定功能,在纯粹的 Java EE 应用中无法使用。
  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值