2012-07-31 121 views
0

我目前正在研究Java多模塊項目,並希望通過DI減少耦合。作爲一個最小的例子,我有兩個模塊。模塊A是我通過Guice做所有注入的客戶端。 Modula A在模塊B中調用大多數EJB中的類,並通過@EJB註釋注入自己。要讓模塊A調用模塊B中的類,我使用JNDI查找。我現在試圖擺脫JNDI並通過guice在模塊B中注入類。當我這樣做時,@EJB不再工作。有沒有通過guice做到這一點的解決方案?用Guice開始@EJB注入

回答

1

你做什麼是可能的,但只適用於從控制檯訪問EJB的測試場景。真正的應用程序客戶端代碼不應該直接訪問bean。另外,儘管您可以編寫自定義注入以注入EJB資源,但您的bean在EJB容器(實體,資源,服務調用,攔截器,事務)之外的行爲會有所不同。所以一般說:不要混合guice和ejb注射生產代碼。

+0

Thx爲您的確切答案。這就是我需要知道的Guice。 JNDI是唯一的出路嗎?這個想法是讓DI測試變得更容易,因爲JNDI的東西真的很緊密。 – 2012-08-01 13:45:41

+0

JNDI是一個非常鬆散的耦合。你的客戶只知道一個服務接口,通過jndi查找和連接這個接口的具體實現。 – 2012-08-01 15:09:08

+0

從這個角度來看,你是對的,但我直接將JNDI調用到我的服務中,這對於沒有AppServer的孤立測試是個問題。我現在重構了我的課程,並在一個額外的課程中隔離了jndi的東西,我現在可以使用mockito輕鬆地進行模擬。 – 2012-08-02 09:12:57