Преглед
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 когато зависимостите не са задължителни. Но както и комбинации от право.