Para todos nuestros entornos, los datos de configuración se almacenan en las máquinas de destino en forma de archivos de propiedades.Usamos PropertyPlaceholderconfigurer de SpringFramework para vincular estas propiedades a nuestras aplicaciones para mantener las cosas portátiles en todos los entornos.
Por ejemplo, el tiempo que sé que /etc/myapp/database.properties estarán presentes en cualquier máquina de mi aplicación se ejecuta en, a continuación, en mi configuración de la primavera, sólo necesito algo así:
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/etc/myapp/database.properties</value>
</list>
</property>
</bean>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://${db.host}:3306/${db.name}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.pass}" />
</bean>
Hay un montón de opciones para esa clase de Spring sobre dónde pueden vivir los archivos de propiedades. Incluso puede hacer que las sustituciones y pasarlos en como variables de entorno:
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>${database.configuration.file.url}</value>
</list>
</property>
</bean>
Y en bash_profile (o lo que sea): JAVA_OPTS exportación = "-Ddatabase.configuration.file.url = file: /// etc/myapp/database.properties "
O simplemente la misma opción -D que ingresa cuando llama a" java "dependiendo de lo que esté haciendo.
FWIW, mantenemos nuestros archivos de propiedades por separado como RPM.
No estoy seguro ¿Entiendo la pregunta sobre los módulos? – Nicole
No queremos mantener los datos de configuración en las propiedades o archivos xml. Queremos centralizar estos datos en la base de datos. Entonces, se me ocurre crear un módulo separado en nuestra aplicación que maneje todo el material de configuración. – Shekhar
me parece que tomó la decisión de no usar archivos de propiedades basados en algo que no nos está diciendo. ¿Puede decirnos por qué prefiere que la base de datos mantenga los archivos de configuración? Aún necesitará tener algo externo simplemente para administrar las propiedades necesarias para hacer la conexión a la base de datos. – Nicole