2
respostas

Limpar Bean CDI antes de utilizar

Galera, existe alguma forma de eu limpar um objeto injetado antes de utilizar? Ex: Tenho uma classe Retorno que é um bean cdi, porém eu preciso que esse retorno toda vez seja "limpo" antes de utilizar, como se fosse dar um new nele. Existe alguma forma de eu fazer isso utilizando cdi ao invés de ter que utilizar o bom e velho new ?

2 respostas

Fala aí Humberto tudo bem?

Não sei se eu entendi muito bem, mas uma alternativa é você alterar o escopo do seu bean para @RequestScoped dessa forma a cada request será gerado um bean novo.

Humberto, essa "limpeza" é feita pelo próprio CDI.

Os escopos dizem por quanto tempo um bean permanecerá com seus dados.

Existem mais, mas os principais escopos são:

ApplicationScoped -> Usado quando queremos que apenas uma instância do bean seja usada durante todo o tempo de vida da aplicação.

SessionScoped -> Usado quando desejamos manter o bean durante toda a sessão, ou seja, mesmo que o usuário faça vários requests, o bean continuará existindo. Muito comum esse ser o escopo utilizado para manter as informações do usuário logado.

ViewScoped -> O bean manterá seus dados enquanto o usuário não mudar a view, isto é, não mudar de tela.

RequestScoped -> Usado quando queremos que o objeto dure apenas por uma requisição. Deve-se dar preferência a esse escopo, pois ele é o menor e não fica consumindo recursos do servidor (claro que depende da sua necessidade).

Ao fim do ciclo de vida de cada um desses escopos, o bean é destruído e seus dados perdidos. Quando o usuário fizer uma nova requisição, um novo bean será criado, como se fosse dado um new() automaticamente.