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

Cómo ejecutar código antes de destruir un bean en Spring Boot con @PreDestroy

La anotación @PreDestroy en Spring Boot se utiliza para ejecutar un método específico justo antes de que un bean sea destruido, permitiendo realizar tareas de limpieza, como cerrar conexiones o liberar recursos. Esta funcionalidad es útil para garantizar que ciertas operaciones se realicen antes de que la aplicación finalice o el contexto de Spring elimine un bean de la memoria.

¿Cómo funciona @PreDestroy en Spring Boot?

La anotación @PreDestroy proviene del paquete javax.annotation y se aplica a métodos dentro de los beans administrados por Spring. Cuando el contenedor de Spring detecta esta anotación, ejecuta el método anotado antes de destruir el bean, asegurando que los recursos se gestionen de manera adecuada.

Para que @PreDestroy funcione, el bean debe estar configurado como un componente de Spring, ya sea usando anotaciones como @Component, @Service, @Repository, o mediante la declaración en un archivo de configuración XML.

Ejemplo de uso de @PreDestroy

Aquí tienes un ejemplo simple para entender cómo utilizar @PreDestroy en un proyecto de Spring Boot:

import javax.annotation.PreDestroy;
import org.springframework.stereotype.Component;

@Component
public class MiBean {
    
    // Método de inicialización
    public void iniciar() {
        System.out.println("Bean iniciado.");
    }

    // Método de limpieza antes de destruir el bean
    @PreDestroy
    public void limpiar() {
        System.out.println("Bean a punto de ser destruido. Cerrando recursos...");
    }
}

En este ejemplo, el método limpiar() se ejecuta automáticamente antes de que el contenedor de Spring destruya el bean MiBean. Esto permite realizar tareas de limpieza, como cerrar conexiones de bases de datos, archivos abiertos o detener hilos en ejecución.

Referencia a la documentación oficial

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

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer