我們正在研究使用JSR-330 javax.inject。*註釋而不是com.google.inject。*等效項。它看起來像JSR-330標準沒有包含我在Guice中喜歡的幾個功能。是否有與@Assisted相同的javax.inject。*
具體來說,我看不到@Assisted關鍵字的支持。另外,@AssistedInject呢? @Inject是否可以放在多個構造函數上?
我有興趣成爲供應商中立,但不會以便利的功能爲代價。任何建議?
我們正在研究使用JSR-330 javax.inject。*註釋而不是com.google.inject。*等效項。它看起來像JSR-330標準沒有包含我在Guice中喜歡的幾個功能。是否有與@Assisted相同的javax.inject。*
具體來說,我看不到@Assisted關鍵字的支持。另外,@AssistedInject呢? @Inject是否可以放在多個構造函數上?
我有興趣成爲供應商中立,但不會以便利的功能爲代價。任何建議?
@Assisted
是Guice專用的。您可以將其與JSR 330的@Inject
一起使用。如果你不想Guice的依賴,通過在代碼中實現工廠接口來做手動輔助注入。
這太糟糕了,也許它會被包含在未來版本的JSR中。 – scubadev
在回答你的問題之一:
是@Inject能夠被放置在多個構造函數?
注入的構造被註解爲@注入,並接受零隻或更多 依賴作爲參數。 @Inject最多可以應用於每個類的一個構造函數 。
所以我認爲答案是否定的。
請注意,JSR-330只是API,而不是實現。 –
我明白,它只是API。但是,@Assisted的使用將嵌入我們的源代碼中。如果它不是API的一部分,那麼如果需要的話,我們將無法「僅僅切換到另一個DI框架」。我不太瞭解Spring,但我認爲它完成這個任務有一個完全不同的方法。 – scubadev
它不是API的一部分。如果你想要真正的DI框架獨立性,你必須嚴格地對API進行編碼。 –