現在、既存のアプリケーションを Spring Boot 1.2 に移行する作業を行っています (Mule 3 を使用しています。Spring 4.2 とは互換性がありません)。このアプリケーションには、Bean 定義を含むアプリケーションに含まれる XML ファイルを読み取ることによっていくつかの ClasspathXmlApplicationContexts を作成することにより、Mule ブートストラップ プロセスを実行するライブラリ提供の (私は変更できません) サーブレットが含まれています。
私の問題は、この XML ファイルには、アクティブなプロファイルに基づいて異なる方法で解決する必要があるいくつかのプレースホルダーが含まれていることです (そして、これらの変数を異なるプロファイルで application.yml ファイルに保存しました)。新しいアプリケーション コンテキストによって作成された StandardEnvironments。
YML ファイルを .properties ファイルに変換し、この各 XML ファイル内に同じ application-#{systemProperties['spring.profiles.active']}.properties を指す新しい PropertyPlaceholderConfigurer を作成できますが、次のようになります。
慣習と優先順位を使用して .properties ファイルをさまざまな内部/外部の場所に配置する Boot の柔軟性が失われます。これは、さまざまな環境に移行するアプリケーションにとって便利に思えます。
同じ定義を何度か追加する必要がある場合は、無視しているプログラムによる方法があると思います。
それらを作成するクラスを変更するアクセス権を持たずに、新しく作成されたすべての ApplicationContexts に applicationConfig PropertySource のコンテンツを追加する方法を知っている人はいますか? Spring Boot 1.2 には、これを行うための EnvironmentPostProcessor の素晴らしさはありません。