logo

Afhankelijkheidsinjectie in het voorjaar

  1. Afhankelijkheidsinjectie in het voorjaar
  2. Afhankelijkheid opzoeken
  3. Afhankelijkheidsinjectie

Dependency Injection (DI) is een ontwerppatroon dat de afhankelijkheid van de programmeercode verwijdert, zodat de applicatie eenvoudig kan worden beheerd en getest. Dependency Injection zorgt ervoor dat onze programmeercode losjes gekoppeld is. Om de DI beter te begrijpen, gaan we eerst de Dependency Lookup (DL) begrijpen:

Afhankelijkheid opzoeken

De Dependency Lookup is een aanpak waarbij we de bron na vraag verkrijgen. Er kunnen verschillende manieren zijn om de bron te verkrijgen, bijvoorbeeld:

 A obj = new AImpl(); 

Op deze manier krijgen we de bron (instantie van klasse A) rechtstreeks via een nieuw trefwoord. Een andere manier is de fabrieksmethode:

invoegsorteer java
 A obj = A.getA(); 

Op deze manier verkrijgen we de bron (instantie van klasse A) door de statische fabrieksmethode getA() aan te roepen.

Als alternatief kunnen we de bron via JNDI (Java Naming Directory Interface) verkrijgen als:

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

Er kunnen verschillende manieren zijn om de bron te verkrijgen om de bron te verkrijgen. Laten we eens kijken naar het probleem van deze aanpak.

Problemen met het opzoeken van afhankelijkheid

Er zijn hoofdzakelijk twee problemen bij het opzoeken van afhankelijkheid.

    strakke koppelingDe afhankelijkheidsopzoekbenadering zorgt ervoor dat de code nauw aan elkaar is gekoppeld. Als de bron wordt gewijzigd, moeten we veel wijzigingen in de code aanbrengen.Niet makkelijk om te testenDeze aanpak zorgt voor veel problemen bij het testen van de applicatie, vooral bij black box-testen.

Afhankelijkheidsinjectie

De Dependency Injection is een ontwerppatroon dat de afhankelijkheid van de programma's wegneemt. In dat geval verstrekken wij de informatie uit de externe bron, zoals een XML-bestand. Het maakt onze code losjes gekoppeld en gemakkelijker te testen. In dat geval schrijven we de code als:

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

In dat geval wordt de klasse Adres geleverd door een externe bron, zoals een XML-bestand, via de constructor- of de setter-methode.

Twee manieren om afhankelijkheidsinjectie uit te voeren in het Spring-framework

Het Spring-framework biedt twee manieren om afhankelijkheid te injecteren

  • Door Constructeur
  • Volgens de Setter-methode

Aankomende onderwerpen in Spring Dependency Injection

Afhankelijkheidsinjectie door constructor

Laten we eens kijken hoe we afhankelijkheid per constructor kunnen injecteren.

Java-tekenreeks vergelijken

Afhankelijkheidsinjectie volgens de setter-methode

Laten we eens kijken hoe we afhankelijkheid kunnen injecteren via de setter-methode.