我浏览了SpringSource上的一些博客,其中一个博客的作者使用了@Inject,我想他也可以使用@Autowired。
下面是这段代码:
@注入私有CustomerOrderService
我不确定@Inject和@Autowired之间的区别,如果有人解释他们的区别,在什么情况下使用哪个,我会很感激的。
我浏览了SpringSource上的一些博客,其中一个博客的作者使用了@Inject,我想他也可以使用@Autowired。
下面是这段代码:
@注入私有CustomerOrderService
我不确定@Inject和@Autowired之间的区别,如果有人解释他们的区别,在什么情况下使用哪个,我会很感激的。
当前回答
@Inject没有'required'属性
其他回答
从Spring 3.0开始,Spring提供了对JSR-330依赖注入注释(@Inject, @Named, @Singleton)的支持。
Spring文档中有一个关于它们的单独章节,包括与它们的Spring等价物的比较。
@Autowired和@Inject之间的关键区别(在阅读Spring Docs时注意到)是,@Autowired有'required'属性,而@Inject没有'required'属性。
除上述外:
@Autowired bean的默认作用域是Singleton,而使用JSR 330 @Inject注释时,它就像Spring的原型。 在JSR 330中,没有使用@Inject的@Lazy的等等物。 在JSR 330中,没有使用@Inject的@Value的等效物。
要处理没有连接的情况,可以使用将@Autowired required属性设置为false的bean。
但是当使用@Inject时,Provider接口与bean一起工作,这意味着bean不是直接注入的,而是与Provider一起注入的。
@Inject没有'required'属性