Ciclo de vida do feijão da primavera

Ciclo de vida do feijão da primavera
Neste artigo, aprenderemos o ciclo de vida do objeto Java Bean e alguns métodos úteis para executar as operações durante sua fase de ciclo de vida, como inicialização e destruir o objeto Bean.Cada objeto de feijão é gerenciado pelo COI da primavera e o ciclo de vida começa quando o contêiner (COI) começa com base nos metadados da configuração.

O ciclo de vida do feijão da primavera tem inúmeras etapas, como inicialização, execução e destruição. Podemos executar nossa tarefa personalizada entre essas fases para testes/depuração ou outros fins de utilidade.

Por exemplo, Se queremos executar algumas tarefas no início do feijão e algumas tarefas relacionadas limpar no final, podemos fazer isso na inicialização do feijão ou antes de destruir o objeto Bean, respectivamente. Torna o aplicativo mais funcional e mais fácil de depurar também.

Para esse fim, a primavera fornece alguns predefinidos interfaces e anotações Isso facilita nossa tarefa. Existem duas maneiras de executar essas tarefas:

  • Interfaces
  • Anotações

Primeiro, começamos com as interfaces e depois olhamos para as anotações.

Interfaces para Java Bean Lifecycle

A primavera tem duas interfaces, InicializandoBean e DescartávelBean, que contém vários métodos de utilidade para executar as tarefas durante o ciclo de vida do feijão.

Para executar a tarefa de inicialização, podemos usar Afterpropertiesset () Método do InicializandoBean Interface da mesma forma para os recursos de limpeza. Antes de destruir o objeto Bean, podemos usar o destruir() Método do DescartávelBean interface.

Vamos começar com exemplos de execução.

Implementando métodos de ciclo de vida usando interfaces

Nesse caso, primeiro, criamos um aplicativo de primavera baseado em Maven e depois criamos um funcionário de Bean. Esta classe de feijão implementa as duas interfaces que discutimos. Agora, devemos implementar seus métodos também.

O Afterpropertiesset () o método é usado para executar a tarefa de inicialização e o destruir() Método para executar a tarefa antes de destruir o objeto Bean. Veja o código -fonte da aula de feijão do funcionário.
// funcionário.Java

PackageCom.Linuxhint.feijões;
Importorg.Springframework.feijões.fábrica.DescartávelBean;
Importorg.Springframework.feijões.fábrica.InicializandoBean;
Importorg.Springframework.estereótipo.Componente;
@Component ("EMP")
PublicClass Funcionários implementaNitializeBean, DisposableBean
privateIntId;
nome de string privado;
public String getName ()
returnName;

publicVoidSetName (nome da string)
esse.nome = nome;

publicIntgetId ()
returnID;

publicVoidSetId (INTID)
esse.id = id;

@Sobrepor
publicVoidAfterPropertiESSET () lança exceção
Sistema.fora.println ("Inicializando as tarefas realizadas ...");

@Sobrepor
publicVoidDestroy () lança exceção
Sistema.fora.println ("Tarefas de limpeza feitas… \ nbean objeto destruído!");

Esta é a classe principal em que instanciamos o feijão e chamamos seu método Getters and Setters.

// SpringApp.Java

pacote com.Linuxhint;
importação org.Springframework.contexto.anotação.AnoTationConfigApplicationContext;
importar com.Linuxhint.feijões.Funcionário;
classe pública SpringApp
public static void main (string [] args)
AnoTationConfigApplicationContext AC = NOVO AnoTationConfigApplicationContext (SpringConfig.aula);
Funcionário emp = (funcionário) AC.getBean ("EMP");
Emp.setName ("rohan");
Sistema.fora.println ("Execução do feijão ...");
Nome da string = Emp.getName ();
Sistema.fora.println ("nome:"+nome);
AC.fechar();

// SpringConfig.Java

PackageCom.Linuxhint;
Importorg.Springframework.contexto.anotação.Componentscan;
Importorg.Springframework.contexto.anotação.Configuração;
@Configuração
@ComponentsCan ("com.Linuxhint.*")
publicClassSSpringConfig

// pom.xml

Este é o arquivo XML que contém todo o código de dependência para o aplicativo.


4.0.0
com.Linuxhint
SpringApp
0.0.1-Snapshot
SpringApp
um aplicativo simples de primavera


org.Springframework
Spring-Core
$ Spring.versão


org.Springframework
Spring-Context
$ Spring.versão



5.2.8.LIBERAR

Execute o projeto

Depois de criar o projeto, é hora de executar o aplicativo para verificar se todos os arquivos estão funcionando bem e o aplicativo está funcionando como esperado. Este aplicativo imprime a seguinte saída na janela do console:

Saída:

Inicializando as tarefas realizadas…
Fean executando…
Nome: Rohan
Tarefas de limpeza feitas ..
Objeto de feijão destruído!

Perceber: Não chamamos os métodos do ciclo de vida, mas implicitamente chamados de recipiente de mola (COI).

Implementando métodos de ciclo de vida usando anotações

Esta é a abordagem moderna em que usamos as anotações no local de interfaces. Isso significa que não são necessárias mais interfaces para ser implementado pela classe Bean. Só precisamos marcar os métodos para chamar usando as anotações @PostConstruct e @predestroy.

A anotação @PostConstruct é chamada no tempo de inicialização, enquanto o @predestroy é chamado pouco antes de destruir o objeto Bean.

Observação: Antes de usar as anotações, devemos adicionar a seguinte dependência ao POM do nosso projeto.Arquivo XML.

Este pacote não está presente no pacote de primavera padrão. Então, para Java 9 e versões superiores, coloque esses frascos no POM.Arquivo XML:


Javax.anotação
Javax.anotação-api
1.3.2

A primavera não fornece nenhum método predefinante, como no caso da interface. Somos livres para criar qualquer método com qualquer nome. Só precisamos marcá -los com as anotações para especificar quando chamá -las pelo contêiner do COI.

Aqui, criamos o método initwork () para executar a tarefa no nível inicial e o método ENDWORK () para executar a tarefa antes de destruir o objeto Bean.

Atualize o Funcionário.Java Arquivo de acordo com o seguinte código -fonte:

// Funcionário.Java

PackageCom.Linuxhint.feijões;
ImportJavax.anotação.Pós -construção;
ImportJavax.anotação.PREDESTROW;
Importorg.Springframework.estereótipo.Componente;
@Component ("EMP")
funcionário publicClass
privateIntId;
nome de string privado;
public String getName ()
returnName;

publicVoidSetName (nome da string)
esse.nome = nome;

publicIntgetId ()
returnID;

publicVoidSetId (INTID)
esse.id = id;

@PostConstruct
publicvoidInitwork ()
Sistema.fora.println ("Inicializando as tarefas realizadas ...");

@Predestroy
publicVidendwork ()
Sistema.fora.println ("Tarefas de limpeza feitas… \ nbean objeto destruído!");

Execute o projeto

Agora, execute o aplicativo novamente e verifique o console. A saída deve ser semelhante à saída anterior.

Inicializando as tarefas realizadas…
Fean executando…
Nome: Rohan
Tarefas de limpeza feitas ..
Objeto de feijão destruído!