Puede mencionar los atributos de sus variables en un archivo de propiedades y definir archivos de propiedades específicos del entorno como local.properties, production.propertied, etc.
Ahora, según el entorno, uno de estos archivos de propiedades se puede leer en uno de los oyentes invocados al inicio, como ServletContextListener.
El archivo de propiedades contendrá los valores específicos del entorno para varias claves.
Muestra "locales.propeties"
db.logsDataSource.url=jdbc:mysql://localhost:3306/logs
db.logsDataSource.username=root
db.logsDataSource.password=root
db.dataSource.url=jdbc:mysql://localhost:3306/main
db.dataSource.username=root
db.dataSource.password=root
Muestra "production.properties"
db.logsDataSource.url=jdbc:mariadb://111.111.111.111:3306/logs
db.logsDataSource.username=admin
db.logsDataSource.password=xyzqer
db.dataSource.url=jdbc:mysql://111.111.111.111:3306/carsinfo
db.dataSource.username=admin
db.dataSource.password=safasf@mn
Para usar este archivo de propiedades, puede hacer uso de REsource como se menciona a continuación
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:"+System.getenv("SERVER_TYPE")+"DB.properties");
configurer.setLocation(resource);
configurer.postProcessBeanFactory(beanFactory);
SERVER_TYPE se puede definir como la variable de entorno con los valores adecuados para el entorno local y de producción.
Con estos cambios, appplicationContext.xml tendrá los siguientes cambios
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${db.dataSource.url}" />
<property name="username" value="${db.dataSource.username}" />
<property name="password" value="${db.dataSource.password}" />
Espero que esto ayude .