为了账号安全,请及时绑定邮箱和手机立即绑定

在Spring Framework中@Inject和@Autowired有什么区别?

/ 猿问

在Spring Framework中@Inject和@Autowired有什么区别?

holdtom 2019-12-07 13:46:28

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


这是一段代码:


@Inject private CustomerOrderService customerOrderService;


我不知道之间的区别@Inject和@Autowired,如果有人解释他们的区别将不胜感激,什么情况下要使用哪一个?


查看完整描述

3 回答

?
DIEA

假设这里是指javax.inject.Inject注释。@Inject是Java EE 6(JSR-299)中引入的Java CDI(上下文和依赖项注入)标准的一部分,更多内容。Spring选择支持@Inject与自己的@Autowired注释同义使用。


因此,回答您的问题@Autowired是Spring自己的注释。@Inject是Java新技术CDI的一部分,该技术定义了类似于Spring的依赖项注入标准。在Spring应用程序中,这两个注释的工作方式与Spring决定除了支持自己的某些JSR-299注释一样。


查看完整回答
反对 回复 2019-12-07
?
临摹微笑

这是一篇比较@Resource,@Inject和的博客文章,@Autowired似乎做得很全面。


从链接:


除了测试2和7,配置和结果相同。当我深入研究时,我确定'@Autowired'和'@Inject'注释的行为相同。这两个注释都使用'AutowiredAnnotationBeanPostProcessor'注入依赖项。'@Autowired'和'@Inject'可以互换使用来注入Spring bean。但是,“ @ Resource”注释使用“ CommonAnnotationBeanPostProcessor”来注入依赖项。即使它们使用不同的后处理器类,它们的行为也几乎相同。以下是其执行路径的摘要。


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


结论将为您提供所需的所有信息。


查看完整回答
反对 回复 2019-12-07
?
慕莱坞森

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

但是,当使用时@Inject,Provider接口可与Bean一起使用,这意味着不会直接注入Bean,而是与Provider一起注入。


查看完整回答
反对 回复 2019-12-07

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信