ExpertiDict

Java · Essencial · Português · Técnico

injeção de dependência

/ĩʒeˈsɐ̃w dʒi depẽˈdẽsjɐ/substantivo

Técnica em que um objeto recebe de fora as dependências de que precisa, em vez de criá-las. No Spring, o contêiner as entrega pronto.

Onde usar

Aparece em review: 'injete a interface, não instancie com new'. Facilita trocar implementações e testar com dublês.

Em código

interface Relogio { Instant agora(); }
class Pedido {
  private final Relogio relogio;
  Pedido(Relogio r) { this.relogio = r; }
}
new Pedido(Instant::now);      // produção
new Pedido(() -> Instant.EPOCH); // teste

Exemplos

Com injeção de dependência, o teste passa um relógio falso.

Não instancia o serviço com new, deixa a injeção de dependência cuidar disso.

Cuidado

Não confunda com Service Locator, em que a classe busca ativamente a dependência; na injeção ela apenas declara o que precisa.

Sinônimos

DI, inversão de controle

Veja também

Todos os termos de Java