2016-07-29 64 views
0

我有兩個包的Spring IoC接口和實現在不同的包

  • com.xxx.A包含一個界面 - >持久性。

  • com.xxx.B包含幾個impls爲持久性,

    • 等mySqlPersistence,hibernatePersistence。當我使用Spring IoC來切換不同的實現,我該怎麼配置他們

我的問題是什麼?順便說一下我使用構造注入..

注意:目前,

  • 在包裝「A」我有一個倉庫使用持久性接口。
  • 包B中的實現
  • 由於包含「A」的包裝操作域,包「B」取決於包「A」。

配置文件應該在哪裏?

第一次接觸Java的春天,爲幫助....

+0

什麼時候你想改變實現?在不同的部署?在應用程序啓動?在飛行中? –

+0

@RobertMoskal應該​​在應用程序中開始選擇不同的impl。 – Linqtoxml

回答

0

這可以通過在web.xml/configuration.xml文件中設置下面要做的感謝:

<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>hibernatePersistence</param-value> 
</context-param> 
<!--context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>mySqlPersistence</param-value> 
</context-param--> 

這是相關的組件冬眠可以註釋爲:

@ActiveProfiles("hibernatePersistence") 

而且同樣可以有「mySqlPersistence」

組件

如果您需要mySqlPersistence爲活動狀態,請刪除評論和評論「hibernatePersistence」一個。

+0

謝謝,當我切換不同的impl時,這個解決方案會改變源代碼嗎? – Linqtoxml

+0

你的實現應該是這樣的,組件/類應該不同於hibernate和mysql(由@ActiveProfiles識別)。而當你想切換時,只需在XML文件中註釋你不需要的配置文件即可。 – Manmeet