2012-11-16 39 views
3

我有三個Maven的模塊:Maven的模塊依賴性的國際奧委會發出

  • 道(含DAO接口),
  • DaoImpl(含執行道DAO類),
  • 服務(含利用DaoImpl對象服務)。

三個模塊之間的依賴關係是這樣的:

DaoImpl - >道< - 服務

' - >' 是指 '取決於'

我想注入DaoImpl bean進入服務bean。問題是由於Service不依賴DaoImpl,因此無法訪問其類路徑。因此,在Service中聲明的DaoImpl bean不能自動掛接到DaoImpl的應用程序上下文中聲明的bean。

一種解決方案是使服務依賴於DaoImpl。

道< - DaoImpl < - 服務

但在這CAS,就沒有具有用於DAO的接口的含義。模塊Dao將不再需要,DaoImpl將暴露。

你有關於這個問題的任何爭論?

此致敬禮。

回答

1

恕我直言,你應該介紹第四個模塊,這取決於道,(daoimpl之一)和服務。

這是一種'應用程序部署'模塊 - 通常是WAR或類似的東西。

  • 應用程序 - >服務 - >道
  • 應用程序 - > DaoImpl - >道

應用模塊的作用主要是準備完整的類路徑。

+0

好的。我懂了。這個模塊就是將DaoImpl bean提供給Service模塊的模塊,不是嗎? – user1830170

+0

是的,應用程序是應該將所有組件連接在一起的應用程序 - 無論是java代碼還是spring或其他任何東西 –

0

它也可以通過

Service 
    |_DaoIface 
    |_DaoImpl 

這裏春天來解決可以從服務被加載所以它既有IFACE並實現了一套可見。

因爲Impl對服務是直接可見的,所以並不意味着DaoIface不是必需的。這是你的設計決定。如果DAOImpls實現將在運行時更改,或者如果有任何其他組件需要公開您的DAO層,那麼iface將會很方便。

+0

好的,謝謝你的答案。由於我將有一個網絡模塊,我認爲這將是管理佈線的戰爭。 – user1830170