プロパティ プレースホルダーを使用していくつかのプロパティ ファイルを読み込もうとしています。アプリが実行される環境に基づいて異なるファイルを読み込めるように、システム プロパティを使用してファイルの 1 つの名前を指定したいと考えています。
最初に私は次のことを試しました:
<context:property-placeholder location="classpath:environment_common.properties,classpath:environment_${app_env}.properties" />
システム プロパティ (app_env) が正しく設定されていること (例: "bar") を検証しましたが、Spring が間違ったファイル (例: environment_foo.properties) をロードしています。
次にSpELを使ってみました:
<context:property-placeholder
location="#{ 'classpath:environment_common.properties,classpath:environment_'.concat(systemProperties['app_env'] }.properties) }" />
しかし、context:property-placeholder
SpEL をサポートしていないようです:
java.io.FileNotFoundException: Could not open ServletContext resource [/#{'classpath:environment_common.properties]
context:property-placeholder
複数のプロパティ ファイルを区切るためにコンマを探す独自のパーサーがあるように見えますが、最初に値を SpEL に渡して評価するわけではありません。
をどのように使用すればよいですかcontext:property-placeholder
、それともバイパスしてPropertyPlaceHolderConfigurer
直接使用する必要がありますか?