SpEL (Spring Expression Language) es un lenguaje de expresión integrado en Spring que permite evaluar expresiones de forma dinámica dentro del framework. Se utiliza para acceder a propiedades, ejecutar métodos, manipular colecciones y más, en tiempo de ejecución. Es ampliamente utilizado en Spring Boot para personalizar configuraciones, filtrar datos, o inyectar valores complejos en beans.
SpEL es un potente lenguaje de expresión que permite realizar evaluaciones de expresiones de manera flexible dentro de contextos como archivos de configuración (@Value
), anotaciones de seguridad, controladores y otras partes de una aplicación en Spring Boot. Sus expresiones pueden incluir:
#{objeto.propiedad}
).
#{servicio.metodo()}
).
#{lista[0]}
).
SpEL se utiliza en múltiples lugares del ecosistema de Spring Boot, por ejemplo:
@Value
:
@Value("#{systemProperties['user.name']}")
private String userName;
En este caso, se usa una expresión SpEL para obtener el nombre de usuario del sistema.
@PreAuthorize
o @PostAuthorize
):
@PreAuthorize("hasRole('ADMIN') and #id == authentication.principal.id")
public void metodoSeguro(Long id) {
// código
}
Aquí, SpEL ayuda a establecer condiciones complejas para la autorización de usuarios.
1. Inyección de valor desde una propiedad del sistema:
@Value("#{T(java.lang.Math).random() * 100.0}")
private double randomValue;
Este ejemplo genera un valor aleatorio multiplicado por 100 usando una expresión SpEL.
2. Acceso a propiedades de beans:
@Value("#{miBean.propiedad}")
private String propiedadDelBean;
Para más detalles y ejemplos, puedes consultar la documentación oficial de Spring.
Jorge García
Fullstack developer