我只是想知道@Inject&和@Inject之间有什么区别? @Autowired 何时使用每一个?或者他们正在做同样的事情?
如果我有一个具有范围的春豆:
@Service
@Scope("singleton")
我可以为它进行依赖注入吗?没有问题吗?
提前感谢。
答案 0 :(得分:7)
据我所知,他们也这样做。 @Inject是来自javax.inject的注释,它只是依赖注入的API。在Spring中你可以使用两者,因为我认为Spring为@Inject提供了一个实现,它和Spring环境中的@Autowired一样。
Matthias Wessendorf在此发表了关于此事的博文:http://matthiaswessendorf.wordpress.com/2010/04/20/spring-3-0-and-jsr-330-part-2/
答案 1 :(得分:6)
阅读the documentation怎么样?
JSR 330的@Inject注释可用于代替Spring @Autowired在下面的例子中。 @Inject没有必需的 不像Spring的@Autowired注释那样具有必需属性 指示正在注入的值是否可选的属性。这个 如果您有JSR 330 JAR,则会自动启用行为 类路径。
答案 2 :(得分:2)
我认为值得指出的是,如果你使用@Autowired
,你正在创建对Spring的依赖,使用@Inject
,你将能够交换另一个支持的依赖注入框架JSR 330
。
答案 3 :(得分:0)
首先,@ Autowired由Spring Framework定义,但@Inject来自" Dependency Injection for Java" (JSR-330)"
第二次,@ Inject没有获取必需的属性,所以如果找不到任何bean,它将失败并出现错误,但@Autowired可以带有required = false并允许可空的领域。
第三,@ Inject注释的优势在于,您可以要求@Inject注入提供者,而不是直接注入引用。 Provider接口允许延迟注入bean引用和注入bean的多个实例等。