美文网首页Java In Mind
@Autowired、@Resource和@Inject的区别

@Autowired、@Resource和@Inject的区别

作者: SevenLin1993 | 来源:发表于2020-02-24 21:37 被阅读0次

@Resource

JDK默认提供的注解,属于JSR-250规范的一部分(其他的还有@PostConstruce/@PreDestroy等),可以标记在属性或者Setter上,Spring通过CommonAnnotationBeanPostProcessor来处理该注解,在实现依赖注入的时候的匹配顺序是:

  • 基于名称
  • 基于类型
  • 基于@Qualifier

@Inject

属于JSR-330提供的注解,该规范主要提供Java注入相关的注解,需要手动引入:

<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>

Spring通过AutowiredAnnotationBeanPostProcessor来处理该注解,处理顺序是:

  • 基于类型
  • 基于@Qualifier
  • 基于名称和@Named

@Autowired

Spring提供的注解,功能与@Inject相似,也是通过AutowiredAnnotationBeanPostProcessor处理,处理的顺序同样是:

  • 基于类型
  • 基于@Qualifier
  • 基于名称

总结

@Resource和@Inject都是Java平台提供的注解,主要用于JavaEE,而之所以能在Spring中生效是由于Spring实现了相关的规范,而@Autowired是Spring提供注解,使用上只要明白其注入顺序,正确注入使用即可,没有过多的区别,安装自己的使用习惯或者团队的风格选择使用即可。

参考:

相关文章

网友评论

    本文标题:@Autowired、@Resource和@Inject的区别

    本文链接:https://www.haomeiwen.com/subject/ecgwqhtx.html