4 oct. 2011

Uso de variables de Entorno con Spring


Hoy he tenido que pelearme con la configuración de Spring para poder desplegar una aplicación que ataca a una base de datos en diversos JBoss, con distintos esquemas de base de datos por usuario, así que he echado a volar mi imaginación y en lugar de utilizar diversos archivos de propiedades he decidido usar variables de entorno (que ya están definidas por requisitos de aplicación) esto aparentemente sencillo (al final lo era) se ha convertido en una odisea digna del propio Ulises, bueno no he tardado 20 años con dar con la solución, pero me ha costado un ratillo.

He empezado por lo sencillo (PropertyPlaceHolderConfigurer) y he pensado... "Pues si pongo el nombre de la vairiable de entorno... esto tiene que tirar si o si..." PUES NO!!! Navegando por los interneses he dado con varias páginas que me podían ayudar, pero nada, al final he hecho un "popurrí" y la cosa ha quedado tal que así:
  • Configuración del PropertyPlaceHolderConfigurer de spring:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="searchSystemEnvironment" value="true"/>
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:resources.properties</value>
</list>
</property>
</bean>
  • Configuración del DataSource
<bean id="dataSourceConfiguracion" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver" />
<property name="jdbcUrl" value="${DB_URL}" />
<property name="minPoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="initialPoolSize" value="10" />
<property name="idleConnectionTestPeriod" value="30000" />
<property name="testConnectionOnCheckin" value="true" />
<property name="preferredTestQuery" value="SELECT 1 FROM DUAL" />
<property name="user" value="${DB_USR}" />
<property name="password" value="${DB_PWD}" />
</bean>

En esta configuración DB_URL, DB_USR y DB_PWD están definidas como variables de entorno a nivel de usuario.

Espero que os sirva de ayuda.

Un saludo y a disfrutar!


No hay comentarios: