java guice_java – Guice:如何为一个类型获得多个@Provides?
我正在研究一個項目并嘗試將兩個不同的“數(shù)據(jù)服務”模塊組合到一個Web應用程序中(目前,該應用程序是一個桌面Swing應用程序).
每個模塊都有自己的Guice(私有)模塊.每個Guice模塊包含:
@Provides
@Inject
protected JPQLQuery provideJPQLQuery(EntityManager entityManager) {
return new JPAQuery(entityManager);
}
稍后將在從db查找內(nèi)容的類的構造函數(shù)中使用它:
@Inject
public SomeClassThatLooksObjectsUpFromDatabase(Provider queryProvider) {
this.queryProvider = queryProvider;
}
然后’queryProvider’可以執(zhí)行查詢.
現(xiàn)在,當只安裝了一個Guice模塊時,這樣可以正常工作,但是一旦安裝了這兩個模塊,我(可預見地)會收到此錯誤:
Unable to create binding for com.mysema.query.jpa.JPQLQuery. It was already configured on one or more child injectors or private modules
bound at ServiceOneGuiceModule.provideJPQLQuery()
bound at ServiceTwoGuiceModule.provideJPQLQuery()
現(xiàn)在,我理解為什么這個被破壞了 – 我說有兩個類型為JPQLQuery的提供者,Guice不知道使用哪一個.
有什么方法可以讓Guice將這些提供商分開嗎?我想這樣做是因為每個模塊都有自己正確配置的Hibernate實體,每個實體都有自己獨特的數(shù)據(jù)源(這個項目中有多個數(shù)據(jù)庫).
理想情況下,它會涉及某種方式命名這些提供程序并按名稱注入它們(例如我可以單獨注入“ServiceOneJPQLQueryProvider”和“ServiceTwoJPQLQueryProvider”),但我還沒有找到任何方法來實現(xiàn)這樣的任何事情.
(我想一個替代方案是以某種方式配置Hibernate,因此它擁有它需要的所有不同的數(shù)據(jù)源,然后我可能只需要一個Provider用于我的查詢,但這看起來比我上面描述的要多得多)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的java guice_java – Guice:如何为一个类型获得多个@Provides?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java nio 追加写文件_Java
- 下一篇: java 自定义http头_HttpCl