日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java guice_java – Guice:如何为一个类型获得多个@Provides?

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java guice_java – Guice:如何为一个类型获得多个@Provides? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我正在研究一個項目并嘗試將兩個不同的“數(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。