Se puede mencionar sus atributos variables en un archivo de propiedades y definir archivos de propiedades específicas del entorno como local.properties, production.propertied, etc.
Ahora, en función del entorno, uno de estos archivos de propiedades puede leerse en uno de los oyentes invocados al inicio, como el ServletContextListener.
El archivo de propiedad contendrá los valores específicos del entorno para varias claves.
de ejemplo "local.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 de producción".propiedades"
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
[email protected]
Para utilizar estas propiedades de archivos, puede hacer uso del recurso como se menciona más adelante
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 puede definirse como la variable de entorno con los valores apropiados para el medio ambiente local y la 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.
¿cuál es el java ... -Denv = QA significa? –
Establece un valor de propiedad del sistema java. Puede leer este valor en código como 'assert System.getProperty (" env ") ==" QA ";' – amra
Creo que esta respuesta es incorrecta, esto no permite leer las variables de entorno del sistema (es decir, las variables de nivel de sistema operativo configuradas con 'export', etc.), solo permite leer las propiedades del sistema Java. – amoe