2016-07-29 3 views
0

私は2つのパッケージ春異なるパッケージでのIOCインターフェースと実装

  • を持ってcom.xxx.Aは、インタフェースが含まれています。

  • com.xxx.BはhibernatePersistence、

    • などmySqlPersistence、永続化のためのいくつかのimplsが含まれています。私はどのように私はそれらを設定できるの、異なる実装を切り替える春IOCを使用した場合

私の質問はありますか?私は、コンストラクタの注入を使用する方法で...

注:パッケージには現在、

  • 「」私は永続インタフェースを使用するためのリポジトリを持っています。
  • パッケージ "B"の実装
  • パッケージ "A"に属し、パッケージ "B"に属する実装ドメインはパッケージ "A"に依存するためです。

ここで、設定ファイルは?

Javaの春触れるのは初めて、助けてくれてありがとう....

+0

実装をいつ変更しますか?異なる展開では?アプリケーションの開始時に?急いで? –

+0

@RobertMoskalはアプリケーション開始時に別のインプを選択する必要があります。 – 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

関連する問題