Hvordan afhængigheden injektion fungerer i foråret?

Dependency Injection

Oversigt

Spring bønne injektion er også populært kendt som 'Dependency Injection (AF)’. Hjertet af foråret rammer er "Inversion af kontrol (IoC)’ og DI er gennemførelsen del af IoC. Vi starter vores diskussion med den antagelse, at konceptet og formålet med IOC og DI er allerede ved.

In this article, Vi vil fokusere på forskellige typer af foråret bønne injektioner med nogle praktiske kodning eksempler.








Afhængighed Injection

Spring bean injektioner kan udføres i to større måder, én er kendt som Constructor-baserede DI og den anden er kendt som Setter-baserede DI. I de følgende underafsnit vil vi kontrollere, hvordan disse kan opnås.

Constructor Based DI

I en constructor baseret DI, afhængigheder injiceres gennem konstruktører. Hvert argument konstruktøren er en afhængighed objekt / bønne. The Spring container påberåber sig konstruktører med argumenterne.

Lad os se et eksempel. Der er to klasser, den ene er den Land klasse og den anden er den Stat klasse. Den Land klasse har en afhængighed af Stat klasse. So, vi vil passere afhængigheden til Land klasse gennem sin constructor (som vist nedenfor).

Listing 1: Country klasse

pakke com.techalpine.spring;

public class Land {

privat stat tilstand;

offentlig Land(Statens tilstand) {

System.out.println(“Inde Country konstruktør.” );

this.state = tilstand;

}

public void stateName() {

state.stateName();

}

}








Now, denne afhængighed kan bruges til at kalde forskellige metoder.

Nedenstående er Stat klasse kode her.

Listing 2: State klasse

pakke com.techalpine.spring;

State public class {

offentlig stat(){

System.out.println(“Inde State konstruktør.” );

}

public void stateName() {

System.out.println(“Inde State navn: West Bengal”);

}

}

Følgende er XML-konfigurationsfilen til wire disse bønner og deres afhængigheder. Bønne id ('StateBean') of the Stat klasse bruges som en constructor argument reference i Land definition klasse bønne. Now, bønnerne er defineret og kablet sammen.

Listing 3: XML-konfigurationsfil

<?xml version=”1.0″ encoding=”UTF-8″?>

<bønner xmlns =”http://www.springframework.org/schema/beans”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.2.xsd”>

<!– Definition for Land bønne –>

<bean id =”countryBean” class =”com.techalpine.spring.Country”>

<konstruktør-arg ref =”stateBean”/>

</bønne>

<!– Definition for staten bønne –>

<bean id =”stateBean” class =”com.techalpine.spring.State”>

</bønne>

</bønner>

Følgende er den vigtigste klasse til at teste konstruktør-baserede bønne injektion.

Listing 4: Hovedprogrammet fil

pakke com.techalpine.spring;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class TestBeanInjection {

public static void main(String[] args) {

ApplicationContext context = ny FileSystemXmlApplicationContext(

“WebContent / WEB-INF / beanConfig.xml”);

Land countryobj = (Land)context.getBean(“countryBean”);

countryobj.stateName();

}

}








Now, køre klassen som et enkeltstående program, og det vil vise følgende output på konsollen.

Inde State konstruktør
Inde Country konstruktør
Inde State navn: West Bengal

Sæt Baser DI

I en Setter baseret DI, afhængigheder føres gennem setter metoder. Spring container påberåber disse setter metoder til at instantiere bønner. Here, mekanismen og komponenterne er næsten magen til konstruktøren baseret DI. Den eneste forskel er, i vedtagelsen af ​​afhængigheder og XML konfiguration. I en setter baseret indsprøjtning, <ejendom> tags bruges i stedet for <konstruktør-arg> tag.








Konklusion

I denne artikel har vi forklarede de måder, hvordan foråret bønner kan injiceres. Der er ikke nogen klar regel når at bruge setter baserede eller konstruktør baseret DI. Vi generelt gå til konstruktør baseret DI når afhængigheder er obligatoriske, og vælge setter-baserede DI når afhængigheder er valgfri. Men kombinationer af begge er også tilladt.

 

Tagged on: , ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share