Volver a la página principal
lunes 23 septiembre 2024
24

¿Qué es SpEL Expression en Spring Boot?

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.

¿Qué es *SpEL* en detalle?

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:

  • Acceso a propiedades de objetos (#{objeto.propiedad}).
  • Llamada a métodos (#{servicio.metodo()}).
  • Realización de operaciones matemáticas o lógicas.
  • Manipulación de colecciones (#{lista[0]}).

¿Dónde se usa SpEL en Spring Boot?

SpEL se utiliza en múltiples lugares del ecosistema de Spring Boot, por ejemplo:

  • Inyección de valores con @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.

  • En anotaciones de seguridad (@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.

Algunos ejemplos

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;

Sitio oficial

Para más detalles y ejemplos, puedes consultar la documentación oficial de Spring.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer