我正在SpringSource上浏览一些博客,在其中一个博客中,作者正在使用@Inject,我想他也可以使用@Autowired。这是一段代码:@Inject private CustomerOrderService customerOrderService;我不知道之间的区别@Inject和@Autowired,如果有人解释他们的区别将不胜感激,什么情况下要使用哪一个?
3 回答
DIEA
TA贡献1820条经验 获得超2个赞
假设这里是指javax.inject.Inject注释。@Inject是Java EE 6(JSR-299)中引入的Java CDI(上下文和依赖项注入)标准的一部分,更多内容。Spring选择支持@Inject与自己的@Autowired注释同义使用。
因此,回答您的问题@Autowired是Spring自己的注释。@Inject是Java新技术CDI的一部分,该技术定义了类似于Spring的依赖项注入标准。在Spring应用程序中,这两个注释的工作方式与Spring决定除了支持自己的某些JSR-299注释一样。
临摹微笑
TA贡献1982条经验 获得超2个赞
这是一篇比较@Resource,@Inject和的博客文章,@Autowired似乎做得很全面。
从链接:
除了测试2和7,配置和结果相同。当我深入研究时,我确定'@Autowired'和'@Inject'注释的行为相同。这两个注释都使用'AutowiredAnnotationBeanPostProcessor'注入依赖项。'@Autowired'和'@Inject'可以互换使用来注入Spring bean。但是,“ @ Resource”注释使用“ CommonAnnotationBeanPostProcessor”来注入依赖项。即使它们使用不同的后处理器类,它们的行为也几乎相同。以下是其执行路径的摘要。
作者引用的测试2和7分别是“按字段名注入”和“尝试使用错误的限定词来解析bean”。
结论将为您提供所需的所有信息。
添加回答
举报
0/150
提交
取消