Configurar un POJO con properties en Spring Boot

Clase 15 de 31Curso de Java: Backend con Spring Boot

Contenido del curso

JPA con Spring y Spring Data

Resumen

Mapear propiedades del archivo application.properties directamente a una clase Java es una de las formas más limpias de gestionar la configuración en Spring Boot. En lugar de inyectar valores uno a uno con @Value, puedes agruparlos en un POJO (Plain Old Java Object) y acceder a ellos como atributos de un objeto.

¿Cómo definir propiedades agrupadas en application.properties?

El primer paso es declarar las propiedades en el archivo application.properties usando un prefijo común que las agrupe lógicamente. En este caso, el prefijo es user [01:00]:

properties user.email=test@mail.com user.password=1234 user.age=25

Este prefijo es clave porque será la referencia que Spring Boot utilice para vincular estas propiedades con una clase Java específica.

¿Qué es un POJO y cómo representa las propiedades?

Un POJO es una clase Java simple que contiene atributos, un constructor y métodos getters y setters, sin depender de ningún framework en particular. La idea es crear una clase llamada UserPOJO dentro de un paquete pojo que refleje exactamente las propiedades definidas [01:25]:

java @ConfigurationProperties(prefix = "user") @ConstructorBinding public class UserPOJO { private String email; private String password; private int age;

public UserPOJO(String email, String password, int age) { this.email = email; this.password = password; this.age = age; } // getters y setters

}

¿Qué hace la anotación @ConfigurationProperties?

La anotación @ConfigurationProperties le indica a Spring Boot que esta clase debe mapearse automáticamente con las propiedades del archivo de configuración. El atributo prefix = "user" conecta cada atributo de la clase con la propiedad correspondiente que comienza con user. [02:10].

¿Para qué sirve @ConstructorBinding?

La anotación @ConstructorBinding le dice a Spring Boot que construya el POJO a partir del constructor, inyectando los valores de las propiedades directamente como argumentos [02:35]. Esto garantiza inmutabilidad y claridad en la inicialización del objeto.

¿Cómo habilitar e inyectar el POJO como dependencia?

Spring Boot no detecta automáticamente una clase anotada con @ConfigurationProperties. Necesitas habilitarla explícitamente en una clase de configuración usando @EnableConfigurationProperties [03:05]:

java @Configuration @EnableConfigurationProperties(UserPOJO.class) public class GeneralConfiguration { }

Con esta línea, Spring Boot registra UserPOJO como un bean gestionado dentro del contenedor de dependencias. A partir de ese momento, puedes inyectarlo en cualquier parte de la aplicación.

Por ejemplo, en la clase principal FundamentosApplication, se inyecta a través del constructor [03:30]:

java private final UserPOJO userPOJO;

public FundamentosApplication(UserPOJO userPOJO) { this.userPOJO = userPOJO; }

Después, puedes acceder a los valores mapeados llamando a los getters:

java System.out.println(userPOJO.getEmail() + " - " + userPOJO.getPassword());

Al ejecutar la aplicación, la consola muestra test@mail.com - 1234, confirmando que el mapeo entre las propiedades y el POJO funciona correctamente [04:05].

Este enfoque es especialmente útil cuando manejas múltiples propiedades relacionadas. Mantiene el código organizado, evita la repetición de anotaciones @Value y facilita las pruebas unitarias al trabajar con un objeto completo en lugar de valores sueltos. Si quieres practicar, intenta imprimir también la edad accediendo a userPOJO.getAge().