2016-05-06 9 views
0

私のSpringアプリケーションコンテキストでは、データソースの動的Bean定義とすべてのデータベースのセッションファクトリを担当するため、アプリケーションコンテキストで常に必要です(同じスキーマ、複数のデータベース)をシステムに登録します。プロファイルの開発がアクティブで、システムに登録されている各データベースに対してLiquibaseデータベースアップグレードを適用する場合にのみ存在するもう1つのbean LiquibaseInitBeanがあります。SpringコンテキストのBean間の条件依存性

DynamicSessionFactoryInitBeanは、常に最新のデータベーススキーマを見ているように、(それが開発プロファイルを意味することは有効で、存在している時はいつでもLiquibaseInitBeanに依存するようにDynamicSessionFactoryInitBeanを作るためにいいだろう。開発プロファイルがアクティブでないとき

単に DynamicSessionFactoryInitBean定義について depends-on="liquibaseInitBean"属性を追加
<beans> 

    <!-- other beans.... --> 

    <bean id="dynamicSessionFactoryInitBean" class="my.app.DynamicSessionFactoryInitBean" /> 

    <beans profile="development"> 
     <bean id="liquibaseInitBean" class="my.app.liquibase.LiquibaseInitBean" /> 
    </beans> 
<beans> 

は明らかに(「LiquibaseInitBean」という名前ませBeanが定義されていない)問題が発生します。 Springに "条件付き依存"または "存在する場合に依存"型の機能がありますか?

答えて

1

dynamicSessionFactoryInitBeanをデフォルトプロファイルと開発プロファイルの2つのプロファイルに定義します。 dynamicSessionFactoryInitBeanをliquibaseInitBeanに依存するようにするには、次のように開発プロファイルでのみ作成します。

NB。他のプロファイルが有効になっていない場合、デフォルトプロファイルは常に有効になります

+0

ありがとう!私はこれを試してみる。 –

関連する問題