Externalizar Propiedades
Spring permite leer información de archivos (texto, imágenes, etc.) localizados en el classpath de la aplicación. Por lo general, se exterioriza archivos de configuración con extensión .properties, donde se define información con el formato clave=valor.
Además de archivos de configuración, podemos utilizar los .properties para definir valores que serán utilizados por varios beans de la aplicación.
Veamos el siguiente ejemplo
Creamos el archivo propiedades.properties dentro de src/main/resources/META-INF/
nombre=Karla apellido=Suarez
En el contenedor Spring, definimos un bean tipo PropertySourcesPlaceholderConfigurer, en su atributo location especificamos la ruta del archivo propiedades.properties
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="location" value="classpath:META-INF/propiedades.properties" /> </bean> <bean id="cliente" class="com.xy.Cliente"> <property name="nombre" value="${nombre}" /> <property name="apellido" value="${apellido}" /> </bean>
El bean PropertySourcesPlaceholderConfigurer permite modificar los metadatos de configuración del contenedor antes de que el bean cliente sea creado, para nuestro ejemplo permitirá reemplazar las expresiones ${nombre} y ${apellido} por el valor correspondiente ubicado en propiedades.properties
Utilizamos la sintaxis ${clave} para acceder a las definiciones en el archivo propiedades.properties
Si desea que PropertySourcesPlaceholderConfigurer procese más de un archivo, reemplaze el atributo location por locations(en plural) y utilize el elemento <list> para asignar las rutas de los archivos.
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="locations" > <list> <value> classpath:META-INF/propiedades.properties </value> <value> classpath:META-INF/mensajes.properties </value> <value> classpath:META-INF/datos.properties </value> </list> </property> </bean>
Simplificar definición PropertySourcesPlaceholderConfigurer
A partir Spring 2.5 puede simplificar la definición del PropertySourcesPlaceholderConfigurer utilizando el name-space context
<context:property-placeholder location="classpath:META-INF/propiedades.properties"/>
Si desea especificar más de un archivo, utilize una coma(,) como delimitador.
Comentarios
Publicar un comentario