Programadores experientes, vocês usam CDI em suas aplicações?
Programadores experientes, vocês usam CDI em suas aplicações?
Ola Alisson,
No meu caso, utilizo, e isso me ajuda muito no dia a dia.
Abraços.
Eric podia me descrever uma vantagem que faz para sua aplicação? obg
A parte que mais que agrada no CDI é a parte que posso evoluir meu código sem quebra-lo em outro lugar. Imagine duas classes simples:
public class ClasseMarota{
private BancoDeDados banco;
public ClasseMarota(BancoDeDados banco){
this.banco = banco;
}
public void salvaUsuario(Usuario usuario){
banco.salva(usuario);
new Notificador().notificaNovoUsuario(usuario);
}
}
public class Notificador {
public Notificador(){}
public void notificaNovoUsuario(Usuario usuario){
System.out.println("Usuario foi salvo: " + usuario.getNome());
}
}
Simplesmente uma classe que alem de salvar o usuario no banco de dados chama uma outra classe que grava no log que o usuario foi salvo.
Agora imagine que a classe Notificador precisa alem de escrever no log, precisa enviar um email para alguém avisando que novo usuario foi salvo. Então sua classe ficara assim:
public class Notificador {
private EnviadorDeEmails enviador;
public Notificador(EnviadorDeEmails enviador){
this.enviador = enviador;
}
public void notificaNovoUsuario(Usuario usuario){
System.out.println("Usuario foi salvo: " + usuario.getNome());
enviador.envia("Novo usuario: " +usuario.getNome(), "financeiro@email.com" );
}
}
Ao fazer esta alteração a ClasseMarota ira parar de funcionar, pois ela terá que de alguma forma conseguir essa classe EnviadorDeEmails, ou seja ela vai ter que pedir para quem esta chamando ela. Percebe que você ira ter que pedir para todos as chamadas anteriores, com CDI é possível "injetar" as classes que você precisa, onde você precisa. Então invés de sair dando new nas classes você sai utilizando as classes. Ou seja para este problema, não seria necessario alterar nenhuma linha do código da ClasseMarota.
Para entender melhor tem um post no forum da caelum muito bom, meio antigo, mas muito bom: http://blog.caelum.com.br/use-cdi-no-seu-proximo-projeto-java/
Alem do curso que temos aqui na Alura: https://cursos.alura.com.br/course/cdi-usando-umas-das-principais-espeficacoes-do-javaee
Estou fazendo um curso aqui do java jsf com cdi, depois vo dar uma olhada em maven, e depois dar uma olhada nesse curso que você me passou, obrigado!