.propertiesファイルからプロパティの値を取得するPropertyPlaceholderConfigurerを持つSpring application-context.xmlがあります。メインとテストのソースフォルダには別々の.propertiesファイルがあります。問題は、.propertiesファイルで環境変数を使用する必要があることです。しかし、私は次のようにそれを行う際に:私は次のエラー取得しています.propertiesファイルのPropertyPlaceholderConfigurerと環境変数
property.name=${env.SYSTEM_PROPERTY}
:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com/example/application.properties"/>
</bean>
としてプレースホルダ構成器が定義されている間
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'beanName' defined in class path resource [com/example/applicationContext.xml]: Could not resolve placeholder 'env.SYSTEM_PROPERTY'
を任意のアイデアを作る方法 - property.nameは環境変数として解釈されます(プレースホルダとして解釈されません)。
ドミトリー。
これはかなり良いです。しかし、問題の1つは、ランタイム変数を定義するのを忘れると、config_xxxファイルが見つからないなどのトリッキーなランタイムエラーが生成されることです。このような状況を改善するために、私は次のような特別なスプリングインタフェースを実装するBeanを登録します:クラスEnvironmentReporterはPriorityOrdered、BeanFactoryPostProcessor、EnvironmentAware {...}を実装します environment.getPropertyは、予想されるプロパティをチェックし、作成した。 – Federico