Hoje vou falar um pouco sobre injeção de dependência sob demanda.
E comum encontrarmos beans ou controllers ou qualquer outra classe com várias injeções de dependências e na maioria das vezes uma boa parte dessas injeções são usadas em momentos pontuais da rotina.
Quando a classe que contém esses injects e instanciada, a CDI vai se virar para criar e disponibilizar todas as suas dependências, já imaginou se em cada uma das dependências existir uma lógica no seu construtor? talvez possa resultar em perca de performance.
Vamos ver na prática:
na forma tradicional seria mais ou menos assim:
@inject
private Payment payment;
Para implementar a injeção sob demanda e bem simples
@inject
@any
private Instance<Payment> paymentInstance; testess
private Payment payment;
Se observar estamos usando o objeto Instance para "segurar" as injeções, para que possamos obter a implementação de forma mais simples e rápida, passamos por parâmetro a interface.
e no momento em que precisarmos dessa dependência a chamamos da seguinte forma:
if( condition ){
this.payment = paymentInstance.select(SuaImplementacao.class).get();
}
será apenas nesse momento em que a injeção e efetivamente será executada.
Ficamos por aqui hoje... até a próxima
Top comments (0)