У меня есть вопрос относительно разницы между PropertyPlaceholderConfigurer (org.springframework.beans.factory.config.PropertyPlaceholderConfigurer) и обычными фильтрами, определенными в моем pom.xml.
Я смотрел на примеры, и кажется, что даже если фильтры определены и помечены как активные по умолчанию в pom.xml, они все еще используют PropertyPlaceholderConfigurer в приложении SpringContext.xml.
Это означает, что pom.xml имеет ссылку на filter-LOCAL.properties, тогда как applicationContext.xml имеет ссылку на application.properties, и они оба содержат одинаковые настройки.
Почему это? Это то, как это должно быть сделано? Я могу выполнить цель mvn jetty: запустить без наличия application.properties, но если я добавлю в application.properties настройки, которые отличаются от filter-LOCAL.properties, они, похоже, не переопределяют.
Вот пример того, что я имею в виду:
pom.xml
<profiles>
<profile>
<id>LOCAL
<activation>
<activeByDefault>true
</activation>
<properties>
<env>LOCAL
</properties>
</profile>
</profiles>
applicationContext.xml
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:application.properties
</list>
</property>
<property name="ignoreResourceNotFound" value="true"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
пример содержимого application.properties и filters-LOCAL.properties
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/shoutbox_dev
jdbc.username=tester
jdbc.password=tester
Могу ли я удалить propertyConfigurer из applicationContext, создать фильтр PROD и игнорировать файл application.properties, или это вызовет проблемы при развертывании на рабочем сервере?