Я использую PropertyPlaceholderConfigurer с 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: ресурс пути к классу [properties / $ {env} .properties] не может быть открыт, потому что он не существует
Я знаю, что файл существует, так как он работает, когда я жестко его кодирую.
Я пытался использовать -Denv = test при запуске Tomcat и установке переменной среды.У меня та же самая вещь, работающая вне Tomcat, использующая мой собственный метод main вместо ContextLoaderListener.
Что я могу делать не так?Могу ли я добиться того же, используя запись в 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>
но я получаю ту же ошибку.