2011-08-03 22 views
1

我們正在研究使用JSR-330 javax.inject。*註釋而不是com.google.inject。*等效項。它看起來像JSR-330標準沒有包含我在Guice中喜歡的幾個功能。是否有與@Assisted相同的javax.inject。*

具體來說,我看不到@Assisted關鍵字的支持。另外,@AssistedInject呢? @Inject是否可以放在多個構造函數上?

我有興趣成爲供應商中立,但不會以便利的功能爲代價。任何建議?

+0

請注意,JSR-330只是API,而不是實現。 –

+0

我明白,它只是API。但是,@Assisted的使用將嵌入我們的源代碼中。如果它不是API的一部分,那麼如果需要的話,我們將無法「僅僅切換到另一個DI框架」。我不太瞭解Spring,但我認爲它完成這個任務有一個完全不同的方法。 – scubadev

+0

它不是API的一部分。如果你想要真正的DI框架獨立性,你必須嚴格地對API進行編碼。 –

回答

4

@Assisted是Guice專用的。您可以將其與JSR 330的@Inject一起使用。如果你不想Guice的依賴,通過在代碼中實現工廠接口來做手動輔助注入。

+0

這太糟糕了,也許它會被包含在未來版本的JSR中。 – scubadev

0

在回答你的問題之一:

是@Inject能夠被放置在多個構造函數?

javadoc

注入的構造被註解爲@注入,並接受零隻或更多 依賴作爲參數。 @Inject最多可以應用於每個類的一個構造函數 。

所以我認爲答案是否定的。

相關問題