Olá desenvolvedores, neste tutorial falaremos sobre o escopo do ManagedBean, a anotação @ApplicationScoped, que mantém toda a instância durante todo o tempo de execução da aplicação. Desse modo o escopo de aplicação apresenta um estado que é compartilhado entre todas as interações dos usuários com a aplicação. Em tese significa que todos os usuários compartilharão o mesmo dado.
No tutorial sobre o “REQUEST SCOPE” vimos que o ciclo de vida da anotação @RequestScoped é de apenas uma submissão. Em “VIEW SCOPE” os dados permanecem em tela e a sessão permanece ativa até que o usuário navegue para uma próxima página. Por sua vez a “SESSION SCOPE” permite que o usuário navegue para uma próxima página, mantendo ativa a sessão aberta, desde que esta permaneça aberta, a sessão é única para cada usuário.
A anotação do managedbean ApplicatonScoped é muito utilizada quando se trabalha com objetos injetados. De forma bem simples, quando se trata de uma sessão de um application scope, temos que um objeto que é definido como @ApplicationScoped é criado apenas uma única vez durante toda a sessão. permitindo que o dado seja compartilhado com os usuários em diversas sessões abertas de uma mesma aplicação.
CONTEXTO DA APLICAÇÃO
Considere uma aplicação simples onde temos um campo inputText para que o usuário adicione um nome qualquer e um commandButton representando um parâmetro de ação para a chamada do método addNome() que adicionará o nome a uma lista. Lista esta que deverá ser exibida na mesma tela de cadastro.
Os nomes que serão adicionados à lista serão exibidos na página por meio de uma dataTable que varre a lista de nomes, e os adiciona a variável “nome”. Esta variável será a responsável por exibir em uma coluna – column, o valor da variável, isto é, o nome adicionado no campo inputText. O componente utilizado para exibir o nome é na coluna é o outputText.
BOAS PRÁTICAS
Considere então a boa prática de sempre limpar os dados em cache do projeto. E assim forçar o carregamento da versão mais recente da aplicação. Desse modo poderemos limpar os dados temporários ou que permanecer de uma implementação anterior e que pode implicar no não funcionamento correto do seu sistema.
E para limpar os dados da memória de um dado projeto, com ele selecionado clique no menu Project >> Clean… Selecione novamente o projeto e clique em “OK”. Publique e start o projeto.
ANOTAÇÃO @APPLICATIONSCOPED
Quando o objeto é definido como @ApplicationScoped, este objeto é criado apenas uma única vez durante toda a sessão. Assim sendo, application scope permite que os dados sejam compartilhados com os usuários em diversas sessões abertas de uma mesma aplicação.
EM POUCAS PALAVRAS
Então vimos que com a anotação @ApplicationScoped do managedbean dos mesmos dados são compartilhados em toda a aplicação. Tudo que um usuário fizer, o outro usuário em uma nova sessão poderá ver.