È possibile menzionare gli attributi della variabile in un file di proprietà e definire file di proprietà specifici dell'ambiente come local.properties, production.propertied ecc.
Ora, in base all'ambiente, uno di questi file di proprietà può essere letto in uno dei listener richiamati all'avvio, come ServletContextListener.
Il file delle proprietà conterrà i valori specifici dell'ambiente per varie chiavi.
Esempio di "proprietà.locali"
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
Esempio di "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
Per utilizzare questi file delle proprietà, è possibile utilizzare REsource come indicato di seguito
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 può essere definita come la variabile di ambiente con valori appropriati per l'ambiente locale e di produzione.
Con queste modifiche, appplicationContext.xml avrà le seguenti modifiche
<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}" />
Spero che questo ti aiuti .