logo

Injeção de Dependência no Spring

  1. Injeção de Dependência no Spring
  2. Pesquisa de dependência
  3. Injeção de dependência

Injeção de Dependência (DI) é um padrão de design que remove a dependência do código de programação para que seja fácil gerenciar e testar o aplicativo. A injeção de dependência torna nosso código de programação fracamente acoplado. Para entender melhor o DI, vamos primeiro entender a pesquisa de dependência (DL):

Pesquisa de dependência

A Pesquisa de Dependência é uma abordagem onde obtemos o recurso após a demanda. Pode haver várias maneiras de obter o recurso, por exemplo:

conversão de tipo e conversão de tipo em java
 A obj = new AImpl(); 

Desta forma, obtemos o recurso (instância da classe A) diretamente pela nova palavra-chave. Outra maneira é o método de fábrica:

 A obj = A.getA(); 

Dessa forma, obtemos o recurso (instância da classe A) chamando o método estático de fábrica getA().

Alternativamente, podemos obter o recurso por JNDI (Java Naming Directory Interface) como:

string substring java
 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A'); 

Pode haver várias maneiras de obter o recurso para obter o recurso. Vamos ver o problema nesta abordagem.

Problemas de pesquisa de dependência

Existem principalmente dois problemas de pesquisa de dependência.

    acoplamento apertadoA abordagem de pesquisa de dependência torna o código fortemente acoplado. Se o recurso for alterado, precisaremos realizar muitas modificações no código.Não é fácil para testarEssa abordagem cria muitos problemas ao testar o aplicativo, especialmente em testes de caixa preta.

Injeção de dependência

A Injeção de Dependência é um padrão de design que remove a dependência dos programas. Nesse caso, fornecemos as informações de uma fonte externa, como um arquivo XML. Isso torna nosso código fracamente acoplado e mais fácil de testar. Nesse caso, escrevemos o código como:

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } } 

Nesse caso, a instância da classe Address é fornecida por uma fonte externa, como um arquivo XML, pelo construtor ou pelo método setter.

Duas maneiras de realizar injeção de dependência no framework Spring

A estrutura Spring fornece duas maneiras de injetar dependência

  • Por construtor
  • Pelo método Setter

Próximos tópicos em injeção de dependência Spring

Injeção de dependência por construtor

Vamos ver como podemos injetar dependência por construtor.

protocolo udp

Injeção de dependência pelo método setter

Vamos ver como podemos injetar dependência pelo método setter.