Ciclo de vida de los frijoles de primavera

Ciclo de vida de los frijoles de primavera
En este artículo, aprenderemos el ciclo de vida del objeto Java Bean y algunos métodos útiles para realizar las operaciones durante su fase del ciclo de vida, como la inicialización y la destrucción del objeto Bean.Cada objeto de frijol es administrado por el CIO de resorte y el ciclo de vida comienza cuando el contenedor (COI) comienza en función de los metadatos de configuración.

El ciclo de vida de la frijol de primavera tiene numerosos pasos como inicialización, ejecución y destrucción. Podemos realizar nuestra tarea personalizada entre estas fases para la prueba/depuración u otros fines de utilidad.

Por ejemplo, Si queremos realizar algunas tareas al comienzo del frijol y algunas tareas relacionadas con la limpieza al final, podemos hacerlo en la inicialización del frijol o antes de destruir el objeto de frijoles, respectivamente. Hace que la aplicación sea más funcional y más fácil de depurar también.

Para este propósito, la primavera proporciona algunos predefinidos interfaces y anotaciones Eso facilita nuestra tarea. Hay dos formas de realizar estas tareas:

  • Interfaces
  • Anotaciones

Primero, comenzamos con las interfaces y luego buscamos las anotaciones.

Interfaces para el ciclo de vida de Java Bean

La primavera tiene dos interfaces, Inicializando Bean y Beating, que contienen varios métodos de utilidad para realizar las tareas durante el ciclo de vida de los bean.

Para realizar la tarea de inicialización, podemos usar AfterPropertIesset () método del Inicializando Bean interfaz de manera similar para la limpieza de recursos. Antes de destruir el objeto de frijoles, podemos usar el destruir() método del Beating interfaz.

Comencemos con los ejemplos de ejecución.

Implementación de métodos de ciclo de vida utilizando interfaces

En este caso, primero, creamos una aplicación de resorte basada en Maven y luego creamos un empleado de Bean. Esta clase de bean implementa ambas interfaces que discutimos. Ahora debemos implementar sus métodos también.

El AfterPropertIesset () El método se utiliza para realizar la tarea de inicialización y la destruir() Método para realizar la tarea antes de destruir el objeto Bean. Consulte el código fuente de la clase de bean de empleado.
// empleado.Java

paquete.Linuxhint.frijoles;
importancia.springframework.frijoles.fábrica.Beatbean desechable;
importancia.springframework.frijoles.fábrica.Inicializando bean;
importancia.springframework.estereotipo.Componente;
@Component ("EMP")
PublicClass Employes implementos deinitializingbean, dispositableBean
PrivateIntid;
nombre de cadena privada;
public String getName ()
nombre de retorno;

publicVoidSetName (nombre de cadena)
este.nombre = nombre;

PublicIntgetId ()
returnid;

publicvoidSetId (intid)
este.id = id;

@Anular
publicVoidAfterPropertiesSet () lanza la excepción
Sistema.afuera.println ("Tareas de inicialización realizadas ...");

@Anular
publicVoidDestroy () lanza la excepción
Sistema.afuera.println ("Tareas de limpieza hechas ... \ Nbean Object destruidas!");

Esta es la clase principal donde instanciamos el bean y llamamos a su método Getters and Setters.

// SpringApp.Java

paquete com.Linuxhint;
Org de importación.springframework.contexto.anotación.AnnotationConfigApplicationContext;
importación.Linuxhint.frijoles.Empleado;
clase pública SpringApp
public static void main (string [] args)
AnnotationConfigApplicationContext AC = New AnnotationConfigApplicationContext (SpringConfig.clase);
Empleado emp = (empleado) AC.getBean ("emp");
Embem.setName ("Rohan");
Sistema.afuera.println ("ejecutando frijoles ...");
Nombre de cadena = EMP.getName ();
Sistema.afuera.println ("nombre:"+nombre);
C.A.cerca();

// springconfig.Java

paquete.Linuxhint;
importancia.springframework.contexto.anotación.Componentes;
importancia.springframework.contexto.anotación.Configuración;
@Configuración
@ComponentsCan ("com.Linuxhint.*")
publicClassSpringConfig

// POM.xml

Este es el archivo XML que contiene todo el código de dependencia para la aplicación.


4.0.0
comunicarse.Linuxhint
SpringApp
0.0.1-snapshot
SpringApp
Una simple aplicación de primavera


organizar.springframework
núcleo de primavera
$ primavera.versión


organizar.springframework
contexto de primavera
$ primavera.versión



5.2.8.LIBERAR

Ejecutar el proyecto

Después de crear el proyecto, es hora de ejecutar la aplicación para verificar si todos los archivos funcionan bien y la aplicación funciona como se esperaba. Esta aplicación imprime la siguiente salida en la ventana de la consola:

Producción:

Inicializar las tareas realizadas ..
Bean Ejecutando ..
Nombre: Rohan
Tareas de limpieza realizadas ..
Objeto de frijoles destruido!

Aviso: No llamamos los métodos del ciclo de vida, sino que implícitamente llamamos el contenedor de resorte (COI).

Implementación de métodos de ciclo de vida utilizando anotaciones

Este es el enfoque moderno donde utilizamos las anotaciones en el lugar de las interfaces. Eso significa que no se necesitan más interfaces para ser implementadas por la clase Bean. Solo necesitamos marcar los métodos para llamar usando las anotaciones @PostConstruct y @Predestroy.

La anotación @PostConstruct se llama en el momento de la inicialización, mientras que el @Predestroy se llama justo antes de destruir el objeto Bean.

Nota: Antes de usar las anotaciones, debemos agregar la siguiente dependencia a la POM de nuestro proyecto.archivo XML.

Este paquete no está presente en el paquete de primavera predeterminado. Entonces, para Java 9 y versiones superiores, coloque estos frascos en el Pom.Archivo XML:


Javax.anotación
Javax.anotación-api
1.3.2

Spring no proporciona ningún método predefinido como en el caso de la interfaz. Somos libres de crear cualquier método que tenga cualquier nombre. Solo necesitamos marcarlos con las anotaciones para especificar cuándo llamarlos por el contenedor del COI.

Aquí, creamos el método InitWork () para realizar la tarea en el nivel inicial y el método de trabajo final () para realizar la tarea antes de destruir el objeto Bean.

Actualizar el Empleado.Java Archivo según el siguiente código fuente:

// Empleado.Java

paquete.Linuxhint.frijoles;
importJavax.anotación.Posconstrucción;
importJavax.anotación.PredestrOY;
importancia.springframework.estereotipo.Componente;
@Component ("EMP")
Empleado de Class Public
PrivateIntid;
nombre de cadena privada;
public String getName ()
nombre de retorno;

publicVoidSetName (nombre de cadena)
este.nombre = nombre;

PublicIntgetId ()
returnid;

publicvoidSetId (intid)
este.id = id;

@PostConstruct
publicvoidinitwork ()
Sistema.afuera.println ("Tareas de inicialización realizadas ...");

@Predestroy
publicvoidendwork ()
Sistema.afuera.println ("Tareas de limpieza hechas ... \ Nbean Object destruidas!");

Ejecutar el proyecto

Ahora, ejecute la aplicación nuevamente y verifique la consola. La salida debe ser similar a la salida anterior.

Inicializar las tareas realizadas ..
Bean Ejecutando ..
Nombre: Rohan
Tareas de limpieza realizadas ..
Objeto de frijoles destruido!