java inject作用_Spring Framework中的@Inject和@Autowired有什么区别?在什么条件下使用哪一个?...

问题

我正在浏览一些关于SpringSource的博客,在其中一个博客中,作者正在使用@Inject,我想他也可以使用@Autowired。

这是一段代码:

@Inject private CustomerOrderService customerOrderService;

我不确定如果有人解释了他们之间的区别以及在什么情况下使用哪一个之间的区别,我会不会感谢它们之间的差异.@Inject和@Autowired

#1 热门回答(595 赞)

假设你在这里指的是javax.inject.Injectannotations.@Inject是Java EE 6(JSR-299),read more中引入的Java CDI(Contexts and Dependency Injection)标准的一部分。 Spring选择使用他们自己的@Autowired注释来支持使用@Inject。

所以,回答你的问题,@Autowired是Spring自己的(遗留)注释.@Inject是一个名为CDI的新Java技术的一部分,它定义了类似于Spring的依赖注入标准。在Spring应用程序中,这两个注释的工作方式与Spring决定支持除了自己的一些JSR-299注释相同。

#2 热门回答(141 赞)

这是ablog post,比较@Resource,@Inject和@Autowired,似乎做了一个非常全面的工作。

从链接:

除测试2和7外,配置和结果完全相同。当我看到引擎盖后,我确定'@Autowired'和'@Inject'注释表现相同。这两个注释都使用'AutowiredAnnotationBeanPostProcessor'来注入依赖项。 '@Autowired'和'@Inject'可以互换使用来注入Spring bean。但是'@Resource'注释使用'CommonAnnotationBeanPostProcessor'来注入依赖项。尽管他们使用不同的后处理器类,但它们的行为几乎相同。以下是其执行路径的摘要。

作者引用的测试2和7分别是"按字段名称注入"和"尝试使用错误限定符解析bean"。

结论应该为你提供所需的所有信息。

#3 热门回答(26 赞)

为了处理没有布线的情况,可以使用@Autowired``required属性设置为false的bean。

但是当使用@Inject时,Provider接口与bean一起工​​作,这意味着bean不是直接注入,而是与Provider一起注入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值