How dependency injection works in Spring?

Dependency Injection

Ikhtisar

Spring bean injection is also popularly known as ‘Dependency Injection (DARI)’. The heart of Spring framework is ‘Inversion Of Control (IoC)’ and DI is the implementation part of IoC. We will start our discussion with the assumption that the concept and purpose of IoC and DI is already know.

In this article, we will focus on different types of Spring bean injections with some practical coding examples.








Dependency Injection

Spring bean injections can be performed in two major ways, one is known as Constructor-based DI and the other one is known as Setter-based DI. In the following sub-sections we will check how these can be achieved.

Constructor Based DI

In a constructor based DI, dependencies are injected through constructors. Setiap argumen konstruktor adalah ketergantungan objek / kacang. Wadah Musim Semi memanggil konstruktor dengan argumen.

Mari kita periksa satu contoh. Ada dua kelas, one is the Negara kelas dan yang lain adalah Negara kelas. The Negara kelas memiliki ketergantungan pada Negara kelas. So, kita akan melewati ketergantungan terhadap Negara kelas melalui konstruktor (as shown below).

Listing 1: kelas negara

paket com.techalpine.spring;

public class Negara {

negara Negara pribadi;

publik negara(negara negara) {

System.out.println(“Di dalam Negara konstruktor.” );

this.state = negara;

}

public void stateName() {

state.stateName();

}

}








Now, ketergantungan ini dapat digunakan untuk memanggil metode yang berbeda.

Berikut ini adalah Negara cuplikan kode kelas.

Listing 2: kelas negara

paket com.techalpine.spring;

public class Negara {

Negara publik(){

System.out.println(“Di dalam konstruktor Negara.” );

}

public void stateName() {

System.out.println(“Di dalam nama Negara: West Bengal”);

}

}

Berikut ini adalah file konfigurasi XML untuk kawat mereka kacang dan dependensi mereka. Kacang id ('StateBean') of the Negara kelas digunakan sebagai acuan argumen konstruktor di Negara definisi kelas bean. Now, kacang didefinisikan dan kabel bersama-sama.

Listing 3: file konfigurasi XML

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

<kacang 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”>

<!– Definisi untuk Country bean –>

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

<konstruktor-arg ref =”stateBean”/>

</kacang>

<!– Definisi untuk kacang Negara –>

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

</kacang>

</kacang polong>

Berikut ini adalah kelas utama untuk menguji injeksi kacang berbasis konstruktor.

Listing 4: file aplikasi utama

paket com.techalpine.spring;

impor org.springframework.context.ApplicationContext;

impor org.springframework.context.support.FileSystemXmlApplicationContext;

public class TestBeanInjection {

public static void main(Senar[] args) {

ApplicationContext konteks = FileSystemXmlApplicationContext baru(

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

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

countryobj.stateName();

}

}








Now, menjalankan kelas sebagai aplikasi yang berdiri sendiri dan ia akan menampilkan output berikut di konsol.

Di dalam konstruktor Negara
Di dalam Negara konstruktor
Di dalam nama Negara: West Bengal

Set Basa DI

Dalam DI Setter berdasarkan, dependensi dilewatkan melalui metode setter. Semi kontainer memanggil metode-metode setter untuk instantiate kacang. Here, mekanisme dan komponen yang hampir mirip dengan DI berdasarkan konstruktor. Satu-satunya perbedaan adalah, di berlalunya dependensi dan konfigurasi XML. Dalam injeksi setter berdasarkan, <milik> tag digunakan sebagai pengganti <constructor-arg> tag.








Kesimpulan

Dalam artikel ini kita telah menjelaskan cara bagaimana biji musim semi dapat disuntikkan. Tidak ada aturan yang jelas ketika menggunakan DI setter berdasarkan atau konstruktor berdasarkan. Kami biasanya pergi untuk berbasis konstruktor DI saat dependensi yang wajib, dan pilih DI berbasis setter ketika dependensi adalah opsional. Tapi kombinasi dari kedua juga diperbolehkan.

 

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