Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo usar fichero properties en Spring

Luis Miguel López Magaña
  • Escrito por Luis Miguel López Magaña el 05 de Diciembre de 2018
  • 4 min de lectura | Frameworks
Cómo usar fichero properties en Spring
El reproductor de video será cargado en breves instantes.

Te enseñamos cómo utilizar un fichero properties en Spring y cómo crearlos vía XML y vía JavaConfig.

¿Qué es una property?

Para explicar qué es property, primero hay que explicar qué es el entorno o environment, ya que cuando ejecutamos una aplicación, el entorno, es decir, lo que hay en torno a esa aplicación, es interesante.

El entorno lo conforman varios elementos, uno de ellos, por ejemplo, es el propio sistema operativo dónde se está ejecutando, que tendrá unas características determinadas. No es lo mismo ejecutar una aplicación Java para Windows o en Linux, ya que aunque desarrollaremos el mismo código, el entorno en el que se está ejecutando es diferente.

Algunos elementos pueden variar, por ejemplo, cómo se indica un path en Windows, el separador de directorios, no es el mismo que en Linux, con lo cual el entorno es algo distinto.

Las properties son un modo conveniente de proporcionar pares clave-valor que podremos utilizar desde nuestra propia aplicación. De hecho, lo que podemos definir mediante una property es una clave, a la que le asignaremos un valor, y en nuestra aplicación podemos usar esa clave.

Un ejemplo sería el separador de directorio que hemos comentado antes o incluso en algún tipo de internacionalización, dónde nosotros pintaríamos en nuestra plantilla el valor de la clave, que se podría fácilmente modificar o adaptar a distintos idiomas.

Podemos ubicar en nuestros proyectos de Spring el fichero de properties, es decir, el fichero donde guardamos todo estos pares clave-valor, que es de tipo textual, por ejemplo dentro de la carpeta de recursos /src/main/resources.

Environment

Environment es también una clase, la cual podemos utilizar en nuestras aplicaciones, y que nos va a dar acceso a todo ese tipo de propiedades, ya sean variables de entorno del sistema operativo, aquellas otras variables que indiquemos en el fichero de properties, alguna propiedad de la máquina virtual de Java, etcétera. Esto se realiza a través de método getProperty.

Spring nos permite inyectarla con autowire, de esta manera no nos tenemos que preocupar de cómo se carga, si depende de un sistema operativo u otro, etcétera.

Configuración vía XML

Para poder usar ficheros de properties, existen diferentes maneras de configurarlos. Vamos a ver a continuación la configuración en XML y más adelante veremos la configuración con JavaConfig.

Si queremos crear y utilizar un fichero de properties debemos crear un fichero de tipo texto dentro de la carpeta de recursos, y dentro de nuestro descriptor de Beans debemos crear un Bean de este tipo:


<beans>
	<bean class=”org.springframework.beans
			.factory.config
			.PropertyPlaceholderConfigurer”>
		<property name=”location” value=”ejemplo.properties” />
	</bean>
	<bean id=”saludator”
		class=”com.openwebinars.spring.properties.Saludator”>
		<property name=”mensaje” value=”${mensaje}” />
	</bean>
</beans>

Esa clase es la que nos va a permitir cargar un fichero de properties. Cómo podemos cargar ese fichero, o el path, se indica mediante la property location, indicando el nombre del fichero que hemos creado en la carpeta de recursos.

Posteriormente, la forma de poder utilizar esa property es con la notación ${nombre.propiedad.elegida}. En el ejemplo vemos que queremos inyectar ese valor de property en una propiedad textual de otro bean que hemos creado con el nombre de ejemplo.properties.

Ejemplo práctico

En la carpeta resources tenemos creado el fichero ejemplo.properties, y como hemos dicho antes, una property se describe mediante un par clave-valor. Dentro del archivo tenemos lo siguiente:

mensaje=¡Hola a todos!

Para poder utilizarlo en XML lo único que tenemos que hacer es cargar en el archivo beans.xml la clase que es capaz de procesar un fichero de properties y permitirnos usarlo. Este archivo sería así:

	…
<beans>
	<bean class=”org.springframework.beans
			.factory.config
			.PropertyPlaceholderConfigurer”>
		<property name=”location” value=”ejemplo.properties” />
	</bean>
	<bean id=”saludator”
		class=”com.openwebinars.spring.properties.Saludator”>
		<property name=”mensaje” value=”${mensaje}” />
	</bean>
</beans>

Esa propiedad se inyecta dentro del valor correspondiente al String mensaje dentro del archivo Saludator.java, que contiene lo siguiente:


package com.openwebinars.spring.properties;

public class Saludator {

	private String mensaje;

	public void setMensaje(String msg) {
	}

public String getMensaje() {
	return this.mensaje;
}
}

Esto nos va a permitir, cuando queramos imprimir ese mensaje por pantalla, que lo podamos hacer, ejecutando el archivo App.java, cuyo contenido es el siguiente:

package com.openwebinars.spring.properties;

import org.springframework.context.ApplicationContext;

public class App {

	public static void main(String [] args) {
		
		ApplicationContext appContext = new ClassPathXmlApplicationContext(“beans.xml”)

		Saludator saludator =appContext.getBean(Saludator.class);
	
		System.out.println(saludator.getMensaje()));

		((ClassPathXmlApplicationContext) appContext).close();
}
}

Si ejecutamos ese fichero comprobamos que se carga ese valor del fichero de properties y se ha impreso.

Configuración vía JavaConfig

Si en lugar de utilizar la configuración XML quisiéramos utilizar JavaConfig, lo que tendríamos que hacer es, en alguna de nuestras clases de configuración donde lo queramos usar, utilizar la anotación @PropertySource, e indicar dentro en la ruta.

Si vamos a guardar ese fichero en la carpeta resources directamente sin crear ningún paquete dentro, podríamos utilizar la palabra classpath dentro de la ruta, para indicar que en la raíz del classpath se encuentra ese fichero de properties.

@Configuration
@PropertySource(“classpath:ejemplo.properties”)
public class AppConfig {
	@Autowired
	Environment env;
	@Bean
	public Saludator saludator () {
		Saludator saludator = new Saludator();
		saludator.setMensaje(env.getProperty(“mensaje”));
		return saludator;
}
}

Podríamos utilizar también algunos otros mecanismos como @Value, pero en el ejemplo optamos por auto inyectar la clase Environment, para que también podamos ver su uso.

Y a través del método getProperty podríamos setear el valor de la propiedad mensaje para poder construir el Bean Saludator y poder utilizarlo y que tenga un comportamiento análogo al que hemos visto en el ejemplo anterior.

Guardamos el código anterior en un archivo llamado AppConfig.java, y con el mismo vemos que en nuestra clase de configuración autoinyectamos nuestro entorno, y que utilizamos a través de getProperty para capturar el valor de esa propiedad y setearlo como valor de este Bean. Si ejecutamos el archivo App.java comprobamos que también nos muestra nuestro mensaje de saludo.

En el caso de que quieras avanzar y profundizar en Spring, puedes hacer el Curso de Spring Core 5, en el que aprenderás el motor de Spring para crear las mejores aplicaciones empresariales.

curso-spring-core

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Curso Online de Hibernate y JPA

Curso Online de Hibernate y JPA

curso

Con este curso aprenderás:

  • Introducción: Persistencia, desfase objeto relacional, ORM.
  • Productos y Estándares en el mercado.
  • Hibernate: más que un ORM

Duración: 7 horas y 39 minutos

Curso de Spring Framework de Java

Curso de Spring Framework de Java

curso

Con este curso aprenderás:

  • Qué es y cómo configurar Spring
  • Inyección de dependencias y sus tipos
  • Usos y ámbitos de Beans

Duración: 7 horas y 26 minutos

Programador Java Web

carrera

Incluye 8 cursos:

  • Curso de Git, GitHub y Jekyll
  • Curso de Spring Framework de Java
  • Curso de Desarrollo Web Java EE

y 5 cursos más!

Duración: 52 horas y 54 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars