zoukankan      html  css  js  c++  java
  • Spring下的@Inject、@Autowired、@Resource注解区别(转)

    1、@Inject

    • javax.inject
    • JSR330 (Dependency Injection for Java)

    这是JSR330中的规范,通过AutowiredAnnotationBeanPostProcessor类实现的依赖注入。

    @Inject使用

    如下是@Inject的使用,不加@Named注解,需要配置与变量名一致即可。

    @Inject
    @Named("mongo")
    private Mongo mongo;

    2、@Autowired

    • org.springframework.bean.factory
    • Spring

    @Autowired是Spring提供的注解,通过AutowiredAnnotationBeanPostProcessor类实现的依赖注入,与@inject二者具有可互换性。

    @Autowired的使用

    @Autowired有个属性为required,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错。

    @Autowired
    private MongoTemplate mongoTemplate;

    3、@Resource

    • javax.annotation
    • JSR250 (Common Annotations for Java)

    这是JSR250规范的实现,@Resource通过CommonAnnotationBeanPostProcessor类实现依赖注入。

    @Resource的使用

    @Resource一般会指定一个name属性,如下:

    @Resource(name = "userMapper")
    private UserMapper userMapper;

    4、三个注解的相异之处

    @Autowired和@Inject基本是一样的,因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入。但是@Resource是个例外,它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。当然,两者都是BeanPostProcessor。

    @Autowired和@Inject

    默认autowired by type,可以通过@Qualifier显式指定autowired by qualifier name。

    @Resource

    默认autowired by field name,如果autowired by field name失败,会退化为autowired by type,可以通过@Qualifier显式指定autowired by qualifier name,如果autowired by qualifier name失败,会退化为autowired by field name。但是这时候如果autowired by field name失败,就不会再退化为autowired by type。

    5、总结

    个人在使用上,更偏重使用@Inject,这是JSR330规范的实现,而@Autowired是Spring的实现,如果不用Spring一般用不上这个,而@Resource则是JSR250的实现,这是多年前的规范。 

    参考:

    http://blog.csdn.net/u012734441/article/details/51706504(以上内容转自此篇文章)

  • 相关阅读:
    LVS基于DR模式负载均衡的配置
    Linux源码安装mysql 5.6.12 (cmake编译)
    HOSt ip is not allowed to connect to this MySql server
    zoj 3229 Shoot the Bullet(无源汇上下界最大流)
    hdu 3987 Harry Potter and the Forbidden Forest 求割边最少的最小割
    poj 2391 Ombrophobic Bovines(最大流+floyd+二分)
    URAL 1430 Crime and Punishment
    hdu 2048 神、上帝以及老天爷(错排)
    hdu 3367 Pseudoforest(最大生成树)
    FOJ 1683 纪念SlingShot(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7726209.html
Copyright © 2011-2022 走看看