我在Tomcat中使用PropertyPlaceholderConfigurer & ContextLoaderListener。PropertyPlaceholderConfigurer with Tomcat&ContextLoaderListener
這工作(與屬性的文件的名稱硬編碼):
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/test.properties"/>
</bean>
但是,這(與屬性的文件的名稱與$替換{ENV}):
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/${env}.properties"/>
</bean>
[ Thread-2] 15:50:16 ERROR ContextLoader - 上下文初始化失敗 org.springframework.beans.factory.BeanInitializationException:無法加載屬性;嵌套的異常是java.io.FileNotFoundException:類路徑資源[屬性/ $ {env} .properties]無法打開,因爲它不存在
我知道該文件存在,因爲它在我硬編碼時起作用。
我試過在啓動Tomcat和設置環境變量時使用-Denv = test。我使用我自己的主方法而不是ContextLoaderListener在Tomcat外部工作。
我會做什麼錯?使用context.xml或web.xml中的條目而不是-Denv = test可以實現同樣的功能嗎?
感謝
PS我也試過:
<bean id="initialcorePropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName">
<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
</property>
<property name="searchSystemEnvironment">
<value type="boolean">true</value>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
<bean id="corePropertyConfigurer" depends-on="initialcorePropertyConfigurer" lazy-init="true"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/${env}.properties" />
</bean>
,但我得到了同樣的錯誤。
我的PropertyPlaceholderConfigurer定義中有一個屬性佔位符工作得很好。但只能用我自己的主要方法,不要使用Tomcat和ContextLoaderListener。 另外,即使我在我的電子郵件末尾使用了2個PropertyPlaceholderConfigurer,它仍會給出同樣的問題。 – Carl
謝謝。根據您的建議,我將$ {env}更改爲#{systemProperties ['env']},並解決了錯誤。我仍然不清楚它爲什麼可以與我自己的主要工作,但不在Tomcat和ContextLoaderListener中。 – Carl