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.
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 constructorLaten 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.