As vezes precisamos executar alguns comandos quando nossa aplicação é iniciada, portanto quem usa algum framework moderno consegue saber quando sua app subiu e com o CDI não é diferente.

date: ‘2022-08-30’ CDI contém uma funcionalidade de ajuda na implementação do padrão de projeto Observer.

A Própria especificação usa esse padrão em suas rotinas internas, vamos usar umas dessas chamadas para observarmos quando o CDI for carregado ao levantar o servidor de aplicação, com o código abaixo fica fácil:

@ApplicationScoped
public class StartSchedule {

	public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {
		
		System.out.println("CDI Iniciado");
	}
 
    public void destroy(@Observes @Destroyed(ApplicationScoped.class) Object init) {

    	System.out.println("CDI Finalizado");
    }
}

Pronto agora podemos fazer alguma ação pois o contexto do CDI foi levantado e podemos usar todo o seu poder.

Cuidados

Quando usamos o método acima para observar a inicialização do CDI outros passos da inicialização só iram continuar após a conclusão deste ou seja o uso errado pode atrapalhar a inicialização completa da sua APP.

Podemos diminuir um pouco esse efeito se colocarmos toda a implementação de negócio para ser executada em outra thread, como no exemplo abaixo:

....

public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {

		new Thread(new Runnable() {
		    @Override
		    public void run(){
		        System.out.println("CDI Iniciado");
		    }
		}).start();
		
	}
...

Conclusão

CDI é uma poderosa ferramenta para ajudar na produtividade do desenvolvimento de soluções usando JavaEE/JarkataEE , essa é apenas uma das diversas funcionalidades que o CDI pode oferecer.


Curtiu ? Me segue nas redes 😉