java中@Resources和@Autowired注解区别和注意

@Resource 注解

@Resource注解来自于javax.annotation包,通常用于Java EE和Jakarta EE环境,但也可以在Spring中使用。它的主要特性和使用注意点如下:

  1. 默认按名称注入

    • @Resource首先根据名称进行注入。如果名称匹配失败,再根据类型进行注入。
    • 你可以显式地指定名称,通过name属性,例如:@Resource(name = "dataSource")
  2. JNDI支持

    • @Resource通常用于注入Java EE资源,比如数据源、JMS连接工厂等。
  3. 限定资源类型

    • 可以通过type属性限定要注入的资源类型,例如:@Resource(type = DataSource.class)

@Autowired 注解

@Autowired注解是Spring框架提供的,用于自动装配Spring管理的bean。它的主要特性和使用注意点如下:

  1. 默认按类型注入

    • @Autowired默认是根据类型进行注入。如果找到多个相同类型的bean,可以通过@Qualifier进一步指定要注入的bean。
  2. 自动要求

    • 默认情况下@Autowired会尝试自动装配。如果找不到匹配项,会抛出异常。可以通过设置required = false属性使其成为可选自动装配。
  3. 构造器、方法和字段

    • 可以用于构造器、方法和字段的自动注入。Spring还支持构造器注入,使得你可以在没有默认构造器的情况下进行自动装配。

注意

  1. 默认注入方式

    • @Resource默认根据名称进行注入,若按名称注入不成功才按类型注入。
    • @Autowired默认根据类型进行注入。
  2. @Resource注解通常用于标记依赖注入的字段或方法。在Jakarta EE环境中(原Java EE),@Resource注解通常用于注入外部资源,比如数据源、EJB、JMS资源等。

    如果一个类的字段使用了@Resource注解,但类本身没有使用特定注解(如@Component@Service@ManagedBean等),那么是否能够成功注入资源取决于以下几个因素:

  3. 运行环境:你需要确保应用程序运行在支持注解解析和注入的容器中。例如,在Spring框架中运行时,Spring容器会扫描并处理所有标记了注释的类和它们的字段。

  4. 配置扫描:即使你的类没有显式地使用特定的注解,许多框架允许通过配置来扫描包路径,从而可以自动识别和处理注解。比如在Spring中,你可以使用@ComponentScan配置来指定包路径进行扫描。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值