Как зависимостта инжекция работи в Spring?

Dependency Injection

Преглед

Spring боб инжекция е също така известен като "Зависимост Injection (НА)’. Сърцето на Spring рамка е "Инверсия на контрол (МОК)’ и DI е част от изпълнението на МОК. Ние ще започнем нашата дискусия с предположението, че концепцията и целите на МОК и DI е вече знаете.

In this article, ние ще се фокусира върху различни видове Spring боб инжекции с някои практически примери за кодиране.








Зависимост Injection

Spring боб инжекции могат да се извършват в два основни начина, един е известен като конструктор базирани DI и другият е известен като сетер базирани DI. В следващите подраздели ще покажат как те могат да бъдат постигнати.

Конструктор Based DI

В конструктор базирани DI, зависимости се инжектират чрез конструктори. Всеки аргумент на конструктора е зависимостта обект / боб. Контейнерът за пролетния извиква конструкторите с аргументите.

Нека да се провери един пример. Има два класа, един е Държава клас, а другият е състояние клас. The Държава клас има зависимостта от състояние клас. So, ние ще премине на зависимостта на Държава клас чрез своя конструктор (as shown below).

Listing 1: Държава клас

пакет com.techalpine.spring;

обществени клас Държава {

частна държавна състояние;

общественото Държава(членка състояние) {

System.out.println(“Вътре Country конструктор.” );

this.state = състояние;

}

обществени невалидни stateName() {

state.stateName();

}

}








Now, тази зависимост може да се използва, за да се обадя на различни методи.

По-долу е на състояние клас код откъси.

Listing 2: членка клас

пакет com.techalpine.spring;

обществени клас членка {

публична държавна(){

System.out.println(“Вътре членка конструктор.” );

}

обществени невалидни stateName() {

System.out.println(“Вътре членка име: West Bengal”);

}

}

Следва XML конфигурационният файл, за да свържете тези зърна и техните зависимости. Идентификационният номер на боб ("StateBean") of the състояние клас се използва като референтен конструктор аргумент в Държава определение клас боб. Now, зърната са определени и жични заедно.

Listing 3: конфигурационен файл XML

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

<боб 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”>

<!– Определение за Country боб –>

<боб ID =”countryBean” клас =”com.techalpine.spring.Country”>

<конструктор-ARG Ref =”stateBean”/>

</боб>

<!– Определение за държавна боб –>

<боб ID =”stateBean” клас =”com.techalpine.spring.State”>

</боб>

</боб>

След е основният клас за тестване конструктор базирани боб инжекция.

Listing 4: Главна досие

пакет com.techalpine.spring;

внос org.springframework.context.ApplicationContext;

внос org.springframework.context.support.FileSystemXmlApplicationContext;

обществени клас TestBeanInjection {

публично статично невалидни основни(Низ[] опцията) {

ApplicationContext контекст = нов FileSystemXmlApplicationContext(

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

Държава countryobj = (Държава)context.getBean(“countryBean”);

countryobj.stateName();

}

}








Now, тичам класа като заявление самостоятелно и това ще покаже следния изход на конзолата.

Вътре членка конструктор
Вътре Country конструктор
Вътре членка име: West Bengal

Комплекти Основи DI

В сетер базирани DI, зависимости са преминали през сетер методи. Spring контейнер се позовава на тези методи сетер конкретни примери боба. Here, механизма и компонентите са почти подобни на DI конструктор основава. Единствената разлика е,, в течение на зависимости и конфигурацията на XML. В сетер базирани инжекция, <имот> маркери се използват вместо <конструктор-арг> tag.








Заключение

В тази статия са обяснени начините как могат да бъдат инжектирани пролетни боб. Не е ясно очертано правило кога да се използва сетер базирани или конструктор на базата DI. Ние обикновено отивам за конструктор базирани DI когато зависимостите са задължителни, и изберете сетер-базирани DI когато зависимостите не са задължителни. Но както и комбинации от право.

 

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share