Kata pengantar
Inversion of Control (IOC) digunakan untuk menyelesaikan kopling, dan terutama dibagi menjadi dua jenis: injeksi ketergantungan dan pencarian ketergantungan.
Injeksi ketergantungan adalah untuk menyuntikkan ketergantungan yang harus dalam program secara eksternal ke dalam program. Tentu saja, ini juga merupakan konsep pola desain.
Dengan asumsi bahwa ada implementasi B antarmuka A dan A, kode ini akan dieksekusi a = baru b (); Pada saat ini, ketergantungan tertentu pasti akan terjadi. Namun, antarmuka tampaknya menyelesaikan ketergantungan, tetapi kopling masih akan terjadi dalam melakukannya. Kita dapat menggunakan injeksi ketergantungan untuk mencapai decoupling. Di IOC, Anda dapat menempatkan kode yang ingin Anda andalkan ke dalam XML, dan membentuk hubungan ketergantungan ini saat dibutuhkan melalui wadah, yaitu, menyuntikkan implementasi antarmuka yang diperlukan ke dalam kelas yang membutuhkannya. Ini mungkin sumber istilah "injeksi ketergantungan".
Pemahaman sederhana tentang injeksi ketergantungan
Jadi, mari kita mengesampingkan teknologi terkait Spring dan XML sekarang, bagaimana kita bisa menggunakan cara termudah untuk menerapkan injeksi ketergantungan? Sekarang masih merupakan implementasi antarmuka A dan A.
Jadi tujuan kami adalah seperti ini, a = b baru (); Sekarang kami mendefinisikan Kelas C, dan berikut ini adalah hubungan antara C dan A. Untuk baru, C membuat kelas implementasi untuk antarmuka
Kelas Publik C {Private A A; publik c (a) {this.a = a; }}Jadi bagaimana cara menggunakan yang baru? Tentukan Kelas D, dan panggil konstruktor C di D baru B (); yaitu
kelas publik d {@test public void use () {c c = new c (new b ()); }}Dengan cara ini, kita tidak akan memiliki ketergantungan antara A dan B dalam C. Jika kita ingin mengubah kelas implementasi A, kita dapat secara langsung memodifikasi parameter metode konstruksi dalam D. Ini sangat sederhana dan juga memecahkan kopling. Metode ini adalah yang paling dikenal sebagai injeksi konstruktor.
Kemudian pegas adalah solusi untuk menggabungkan dan menggunakan IOC. Berikut adalah contoh paling sederhana dari injeksi ketergantungan musim semi:
Springconfig.xml
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-ureans.xsd"> <bean id = "banghello"> <Konstrukor-ure- arang = "hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello/hello, /> </tobel>
Analisis: Dua kacang dikonfigurasi di sini. Yang pertama adalah menyuntikkan kacang ke dalam konstruktor, dan yang kedua adalah kacang yang akan disuntikkan ke dalam konstruktor.
Hello.java
Paket Smile;/*** Dibuat oleh Smile pada 2016/4/21. */kelas publik Hello {public hello () {System.out.println ("Hello"); } public void sayshello () {System.out.println ("Saya ingin menyapa"); }}TheInterface.java
Paket Smile;/*** Dibuat oleh Smile pada 2016/4/20. */kelas publik thetestInterface {private hello hello; Publik thetestInterface (halo halo) {this.hello = hello; }}Use.java
Paket com.smile; impor org.junit.test; impor org.springframework.context.applicationContext; impor org.springframework.context.support.classpathxmlapplicationContext; import smile.hello;/*** dibuat oleh Smile pada 2016/4/21. */Penggunaan kelas publik {@test public void usetest () {applicationContext context = new ClassPathXMLapPlicationContext ("springconfig.xml"); Halo halo = (halo) context.getBean ("halo"); hello.sayhello (); }}Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.