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)