2017-06-15 21 views
0

私は現在、既存のアプリケーションをSpring Boot 1.2(Mule 3を使用し、Spring 4.2と互換性がありません)に移行する作業を進めています。このアプリケーションには、Muleブートストラップ処理を行うライブラリ提供のサーブレットが含まれています。このサーブレットは、Bean定義を含むアプリケーションに含まれるXMLファイルをいくつか読み込み、いくつかのClasspathXmlApplicationContextを作成します。applicationConfig PropertySourceを新しい環境に追加する

私の問題は、このXMLファイルには、アクティブなプロファイルに基づいて異なる解決が必要な複数のプレースホルダが含まれていることです(これらの変数は、プロファイルが異なるapplication.ymlファイルに格納されています)。しかし、applicationConfig PropertySource isn '新しいアプリケーションコンテキストによって作成されたStandardEnvironmentsで利用可能なもの。

YMLファイルを.propertiesファイルに変換し、このXMLファイルのそれぞれに新しいPropertyPlaceholderConfigurerを作成して、同じアプリケーション#{system.properties ['spring.profiles.active']} :

  1. 私は、異なる環境に移行することによりつもりだアプリケーションのための便利な鳴り大会と優先順位を使用して、異なる内部/外部の場所に.propertiesファイルを見つけるのブーツの柔軟性を失うだろう。

  2. 同じ定義を何度も追加する必要がある場合は、私が無視しているプログラムによる方法があると思います。

誰もが、私はそれらを作成したクラスを変更するためにアクセスすることなく、すべての新しく作成されたApplicationContextsにapplicationConfig PropertySourceのコンテンツを追加することができます方法を知っていますか? Spring Boot 1.2には、EnvironmentPostProcessorの素晴らしい機能はありません。

答えて

0

私は、applicationConfigのプロパティのすべてのPropertySourceを検索し、そのすべてのプロパティをSystem.getProperties()マップに置き換える代わりに、すべてのApplicationContextによって解決可能なApplicationListenerを実装することでこれを解決しました。 XMLファイルでは空です。

関連する問題