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

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


这是一段代码:


@Inject private CustomerOrderService customerOrderService;


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


holdtom
浏览 1284回答 3
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注释一样。

临摹微笑

这是一篇比较@Resource,@Inject和的博客文章,@Autowired似乎做得很全面。从链接:除了测试2和7,配置和结果相同。当我深入研究时,我确定'@Autowired'和'@Inject'注释的行为相同。这两个注释都使用'AutowiredAnnotationBeanPostProcessor'注入依赖项。'@Autowired'和'@Inject'可以互换使用来注入Spring bean。但是,“ @ Resource”注释使用“ CommonAnnotationBeanPostProcessor”来注入依赖项。即使它们使用不同的后处理器类,它们的行为也几乎相同。以下是其执行路径的摘要。作者引用的测试2和7分别是“按字段名注入”和“尝试使用错误的限定词来解析bean”。结论将为您提供所需的所有信息。
打开App,查看更多内容
随时随地看视频慕课网APP