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.

¡Hasta pronto 👋👍!

Comentarios

Entradas populares de este blog

JWT (Json Web Token)

Instalar Java Developmet Kit(JDK)

Curso de Spring