Volver a la página principal
miércoles 2 octubre 2024
14

Cómo usar @WebListener en Spring Boot para gestionar eventos en aplicaciones web

La anotación @WebListener en Spring Boot se utiliza para definir clases que escuchan eventos específicos en aplicaciones web, como la inicialización o destrucción del contexto de la aplicación (ServletContext), la creación y destrucción de sesiones (HttpSession), o el uso de atributos dentro del contexto o las sesiones. Esta funcionalidad es útil para realizar tareas como auditorías, control de sesiones o inicialización de recursos al arrancar una aplicación.

¿Cómo funciona @WebListener en Spring Boot?

@WebListener es parte de la especificación de Java EE (javax.servlet.annotation.WebListener) y se utiliza para registrar listeners de servlets en aplicaciones Spring Boot. Aunque se suele emplear en aplicaciones Java EE tradicionales, en Spring Boot se pueden integrar estos listeners para complementar la gestión de eventos en aplicaciones web.

Tipos de eventos que puede manejar @WebListener:

1. ServletContextListener: Escucha eventos de inicialización y destrucción del contexto de la aplicación.

2. HttpSessionListener: Escucha la creación y destrucción de sesiones HTTP.

3. ServletRequestListener: Escucha el ciclo de vida de las solicitudes (request) en la aplicación web.

Para que Spring Boot reconozca la clase anotada con @WebListener, se debe usar el componente @ServletComponentScan en la clase principal de la aplicación o configurar el listener de forma manual.

Ejemplo de uso de @WebListener en Spring Boot

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MiContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Contexto de la aplicación inicializado.");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Contexto de la aplicación destruido.");
    }
}

Clase principal para escanear componentes de servlets

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan // Habilita el escaneo de componentes como @WebListener
public class MiAplicacion {

    public static void main(String[] args) {
        SpringApplication.run(MiAplicacion.class, args);
    }
}

Explicación:

1. Clase MiContextListener:

  • Implementa ServletContextListener y usa @WebListener para indicar que debe escuchar los eventos de contexto de la aplicación.
  • El método contextInitialized se ejecuta cuando el contexto se inicializa, mientras que contextDestroyed se ejecuta al finalizar la aplicación.

2. Clase principal MiAplicacion:

  • Anotada con @ServletComponentScan para escanear y registrar automáticamente las clases con @WebListener, @WebFilter y @WebServlet.

Referencia a la documentación oficial

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

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer