spring中@Inject和@Autowired的区别?分别在什么条件下使用呢?

问题:spring中@Inject和@Autowired的区别?分别在什么条件下使用呢?

我在浏览SpringSource上的一些博客,在其他一个博客中,那个作者用了@Inject,但是我觉得他用@Autowired也行

下面是一部分代码:

@Inject private CustomerOrderService customerOrderService;

我不能确定@Inject和@Autowired的区别,有人可以解释一下他们两个的区别和使用情景吗?

回答一

假设这里你说的是javax.inject.Inject注解。@Inject是Java CDI(上下文以及依赖注入)的一部分,在Java EE 6 (JSR-299)被引入。Spring 已经决定了支持与它们的@Autowired 注解具有相同含义的@Inject注解的使用

所以,你这个问题的答案就是@Autowired 是Spring自家的注解。 @Inject就是一项名叫CDI的Java技术的一部分,这项技术定义了一种类似于Spring的依赖注入的标准。在一个spring的应用程序中呢,这两个注解是作用是一样的,因为spring已经决定除了它们自己的注解外,另外支持一些JSR-299的注解

回答二

这里有一篇博客比较了@Resource, @Inject, 和 @Autowired,已经写得很全面了

来自于那个博客:

除了测试2和测试7,配置和输出都是一样的。当我查看hood的时候,我确定了‘@Autowired’ 和 ‘@Inject’这两个注解的效果是相同的。这两个注解都用了 AutowiredAnnotationBeanPostProcessor 去注入依赖。‘@Autowired’ 和 ‘@Inject’可以交换着使用去注入bean。但是‘@Resource’ 注解使用‘CommonAnnotationBeanPostProcessor’去注入依赖。虽然它们使用了不同的处理器类,但是它们的效果都是几乎一样的。下面是它们执行路径的总结。

那个作者说的测试2和测试7 分别是 ”以字段名注入“ 和 ”一次使用错误限定符来解析bean的尝试“

这里的结论已经回答了你所有的问题了

文章翻译自Stack Overflow:https://stackoverflow.com/questions/7142622/what-is-the-difference-between-inject-and-autowired-in-spring-framework-which

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值