Первый:
Не писать пользователя и передавать в файл pom.xml
Второе:
- Вы можете иметь один applicationContext для каждой среды, например applicationContext-prod.xml и applicationContext-qa.xml
- В вашем pom.xml вы можете иметь одно свойство для каждого профиля, например:
pom.xml
<profile>
<id>qa</id>
<properties>
<appContext>classpath:applicationContext-qa.xml</appContext>
...
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<appContext>classpath:applicationContext-prod.xml</appContext>
...
</properties>
</profile>
В web.xml вы можете написать свой контекстный параметр, например:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>${appContext}</param-value>
</context-param>
Если вы пишете свои пароли в файлах applicationContext, вам больше ничего не нужно. Но из соображений безопасности я рекомендую вам рекомендация записать значения разумной среды в файле внешних свойств:
- Вы можете иметь несколько * .properties в / etc / app
(production.properties и qa.properties)
И, наконец, в вашем applicationContext-prod.xml вы можете настроить свой propertyConfigurer как:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:/etc/app/production.properties</value>
</property>
</bean>
....
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
....
<property name="password">
<value>${db.password}</value>
И в вашем applicationContext-qa.xml вы можете иметь свой propertyConfigurer, например:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:/etc/app/qa.properties</value>
</property>
</bean>
...
Очевидно, в ваших /etc/app/production.properties вы должны написать:
db.password=prodpass
Наконец, в ваших /etc/app/qa.properties вы должны написать:
db.password=qapass