Як ін'єкції залежностей працює навесні?

Dependency Injection

Огляд

ін'єкції Spring квасолі також відомий як "Dependency Injection (DI)’. Серце Spring Framework є "Інверсія Of Control (IoC)’ і DI є реалізація частиною IoC. Ми почнемо наше обговорення з припущенням про те, що концепція і мета IoC і DI вже знають.

In this article, ми зосередимося на різних типах Spring квасолі ін'єкцій з деякими практичними прикладами кодування.








Dependency Injection

Весна квасолі ін'єкції можуть бути виконані за двома основними напрямками, один відомий як конструктор на основі DI, а інший відомий як Сетер основі DI. У наступних підрозділах ми перевіримо, як вони можуть бути досягнуті.

Конструктор на основі DI

У DI на основі конструктора, Залежно впорскується через конструкторах. Кожен аргумент конструктора є об'єктом залежностей / боб. Spring Контейнер викликає конструктори з аргументами.

Давайте перевіримо один приклад. Є два класи, one is the країна клас, а інший є стан клас. The країна клас має залежність від стан клас. So, ми передамо залежність до країна клас через конструктор (як показано нижче).

Listing 1: клас Country

пакет 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, щоб телеграфувати ці боби і їх залежності. Боб ID ('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 вих =”stateBean”/>

</квасоля>

<!– Визначення державної квасолі –>

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

</квасоля>

</боби>

Нижче наводиться основний клас для тестування конструктора на основі ін'єкції квасолі.

Listing 4: Основний файл додатка

пакет com.techalpine.spring;

import 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 сетер, Залежно проходять через інкубаційні методи. Spring контейнер викликає ці методи установники для конкретизації боби. Here, механізм і компоненти практично аналогічні конструктора на основі DI. Єдина відмінність полягає в, в зв'язку з кончиною залежностей і конфігурації XML. У ін'єкції на основі сетер, <власність> теги використовуються замість <Конструктор-Arg> tag.








Висновок

У цій статті ми пояснили способи, як весняні боби можуть бути введені. Там немає правила чітко, коли використовувати DI сетер на основі або на основі конструктора. Ми зазвичай йдуть для конструктора на основі DI, коли залежностей є обов'язковими, і виберіть сетер на основі DI, коли залежності є необов'язковими. Але їх комбінації також допускаються.

 

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