Java Spring @Resource 和 @Autowired 注入方式的区别

36 阅读1分钟

@Resource和@Autowired注入方式的区别

@Autowired

  • 默认按类型(byType)注入:Spring会查找与字段类型匹配的Bean
  • 多个同类型Bean处理:需配合@Qualifier("beanName")指定具体Bean名称
  • required属性:默认为true,未找到Bean时抛出异常;可设置为false允许为null

@Resource

  • 默认按名称(byName)注入
    1. 若指定name属性(如@Resource(name="beanA")),按名称查找
    2. 若未指定name,则按字段名查找Bean
    3. 若按名称未找到,回退到按类型查找
  • 不支持required属性,未找到Bean时抛出异常

总结

  • @Autowired按类型注入,@Resource按名称注入
  • @Autowired支持required属性,@Resource不支持
  • @Resource 可以通过name属性指定名称
  • @Autowired通过@Qualifier指定名称