5

我只是想知道@Inject & @Autowired 什么时候使用每一个?或者他们在做同样的事情?@Inject和@Autowired有什么区别

,如果我有一个Spring bean它有一个范围:

@Service 
@Scope("singleton") 

我可以依赖注入其既没有问题?

在此先感谢。

回答

7

从我所知道的,他们也是这样做的。 @Inject是来自javax.inject的注释,它只是依赖注入的API。在Spring中,您可以同时使用两者,因为我认为Spring为@Inject提供了一个实现,它与Spring环境中的@Autowired做了相同的事情。

马蒂亚斯Wessendorf博客上讲述这个位置:http://matthiaswessendorf.wordpress.com/2010/04/20/spring-3-0-and-jsr-330-part-2/

6

如何阅读the documentation

JSR 330的@Inject注解来代替Spring的 在下面的例子中@Autowired使用。 @Inject不具有所需的 属性,而Spring的@Autowired注释具有所需的 属性,以指示注入的值是否可选。如果您在 类路径中拥有JSR 330 JAR,则会自动启用此 行为。

2

我认为这是值得指出的是,如果你使用@Autowired,你是在春天,在使用@Inject创建的依赖,你将能够换出另一种依赖注入框架,支持JSR 330

+0

请进一步澄清? –

+0

您需要进一步澄清的地方? –

+0

关于在Spring应用程序中使用@Inject,如果这是一个问题或不好的做法? –

0

1)@Inject - 定义在javax.inject包和Java的一部分中。

2)@Autowired - 定义在包org.springframework.bean.factory和Spring框架的一部分。

0

首先,@Autowired由Spring框架的定义,但@Inject是从哪里来的 “Java依赖注入”(JSR-330)”

,@Inject不采取必要的属性,所以如果它未能找到任何bean时,它将失败,错误,但@Autowired可以拿出所需= false,并且将允许为空的字段。

,@Inject注释的优点是,而不是直接注入参考,你可以让@Inject注入一个提供者。提供者接口除其他外,还可以延迟注入bean引用和注入bean的多个实例。