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的多個實例。