Musim Semi - Koleksi Injeksi
Anda telah melihat cara mengkonfigurasi tipe data primitif menggunakan value atribut dan referensi objek menggunakan refatribut dari tag <property> di file konfigurasi Bean Anda. Kedua kasus tersebut berhubungan dengan meneruskan nilai tunggal ke kacang.
Sekarang bagaimana jika Anda ingin meneruskan nilai jamak seperti tipe Koleksi Java seperti List, Set, Map, dan Properties. Untuk menangani situasi tersebut, Spring menawarkan empat jenis elemen konfigurasi koleksi yaitu sebagai berikut -
Sr Tidak | Elemen & Deskripsi |
---|---|
1 | <list> Ini membantu dalam pemasangan kabel, yaitu memasukkan daftar nilai, memungkinkan duplikat. |
2 | <set> Ini membantu dalam menghubungkan satu set nilai tetapi tanpa duplikat. |
3 | <map> Ini dapat digunakan untuk memasukkan kumpulan pasangan nama-nilai di mana nama dan nilai dapat berupa jenis apa pun. |
4 | <props> Ini dapat digunakan untuk memasukkan kumpulan pasangan nama-nilai di mana nama dan nilai keduanya adalah String. |
Anda dapat menggunakan <list> atau <set> untuk mentransfer implementasi java.util.Collection atau file array.
Anda akan menemukan dua situasi (a) Meneruskan nilai langsung dari koleksi dan (b) Meneruskan referensi kacang sebagai salah satu elemen koleksi.
Contoh
Mari kita memiliki IDE Eclipse yang berfungsi dan mengambil langkah-langkah berikut untuk membuat aplikasi Spring -
Langkah | Deskripsi |
---|---|
1 | Buat proyek dengan nama SpringExample dan buat paket com.tutorialspoint di bawahsrc folder dalam proyek yang dibuat. |
2 | Tambahkan pustaka Spring yang diperlukan menggunakan opsi Add External JARs seperti yang dijelaskan di bab Contoh Spring Hello World . |
3 | Buat kelas Java JavaCollection , dan MainApp di bawah paket com.tutorialspoint . |
4 | Buat file konfigurasi Beans Beans.xml di bawahsrc map. |
5 | Langkah terakhir adalah membuat konten dari semua file Java dan file Konfigurasi Bean dan menjalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut adalah konten dari JavaCollection.java file -
package com.tutorialspoint;
import java.util.*;
public class JavaCollection {
List addressList;
Set addressSet;
Map addressMap;
Properties addressProp;
// a setter method to set List
public void setAddressList(List addressList) {
this.addressList = addressList;
}
// prints and returns all the elements of the list.
public List getAddressList() {
System.out.println("List Elements :" + addressList);
return addressList;
}
// a setter method to set Set
public void setAddressSet(Set addressSet) {
this.addressSet = addressSet;
}
// prints and returns all the elements of the Set.
public Set getAddressSet() {
System.out.println("Set Elements :" + addressSet);
return addressSet;
}
// a setter method to set Map
public void setAddressMap(Map addressMap) {
this.addressMap = addressMap;
}
// prints and returns all the elements of the Map.
public Map getAddressMap() {
System.out.println("Map Elements :" + addressMap);
return addressMap;
}
// a setter method to set Property
public void setAddressProp(Properties addressProp) {
this.addressProp = addressProp;
}
// prints and returns all the elements of the Property.
public Properties getAddressProp() {
System.out.println("Property Elements :" + addressProp);
return addressProp;
}
}
Berikut ini adalah konten dari MainApp.java file -
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
JavaCollection jc=(JavaCollection)context.getBean("javaCollection");
jc.getAddressList();
jc.getAddressSet();
jc.getAddressMap();
jc.getAddressProp();
}
}
Berikut adalah file konfigurasinya Beans.xml yang memiliki konfigurasi untuk semua jenis koleksi -
<?xml version = "1.0" encoding = "UTF-8"?>
<beans 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.0.xsd">
<!-- Definition for javaCollection -->
<bean id = "javaCollection" class = "com.tutorialspoint.JavaCollection">
<!-- results in a setAddressList(java.util.List) call -->
<property name = "addressList">
<list>
<value>INDIA</value>
<value>Pakistan</value>
<value>USA</value>
<value>USA</value>
</list>
</property>
<!-- results in a setAddressSet(java.util.Set) call -->
<property name = "addressSet">
<set>
<value>INDIA</value>
<value>Pakistan</value>
<value>USA</value>
<value>USA</value>
</set>
</property>
<!-- results in a setAddressMap(java.util.Map) call -->
<property name = "addressMap">
<map>
<entry key = "1" value = "INDIA"/>
<entry key = "2" value = "Pakistan"/>
<entry key = "3" value = "USA"/>
<entry key = "4" value = "USA"/>
</map>
</property>
<!-- results in a setAddressProp(java.util.Properties) call -->
<property name = "addressProp">
<props>
<prop key = "one">INDIA</prop>
<prop key = "one">INDIA</prop>
<prop key = "two">Pakistan</prop>
<prop key = "three">USA</prop>
<prop key = "four">USA</prop>
</props>
</property>
</bean>
</beans>
Setelah Anda selesai membuat file konfigurasi source dan bean, mari kita jalankan aplikasi. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut -
List Elements :[INDIA, Pakistan, USA, USA]
Set Elements :[INDIA, Pakistan, USA]
ap Elements :{1 = INDIA, 2 = Pakistan, 3 = USA, 4 = USA}
Property Elements :{two = Pakistan, one = INDIA, three = USA, four = USA}
Referensi Injecting Bean
Definisi Bean berikut akan membantu Anda memahami cara memasukkan referensi kacang sebagai salah satu elemen koleksi. Bahkan Anda dapat menggabungkan semua referensi dan nilai seperti yang ditunjukkan dalam cuplikan kode berikut -
<?xml version = "1.0" encoding = "UTF-8"?>
<beans 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.0.xsd">
<!-- Bean Definition to handle references and values -->
<bean id = "..." class = "...">
<!-- Passing bean reference for java.util.List -->
<property name = "addressList">
<list>
<ref bean = "address1"/>
<ref bean = "address2"/>
<value>Pakistan</value>
</list>
</property>
<!-- Passing bean reference for java.util.Set -->
<property name = "addressSet">
<set>
<ref bean = "address1"/>
<ref bean = "address2"/>
<value>Pakistan</value>
</set>
</property>
<!-- Passing bean reference for java.util.Map -->
<property name = "addressMap">
<map>
<entry key = "one" value = "INDIA"/>
<entry key = "two" value-ref = "address1"/>
<entry key = "three" value-ref = "address2"/>
</map>
</property>
</bean>
</beans>
Untuk menggunakan definisi kacang di atas, Anda perlu mendefinisikan metode penyetel sedemikian rupa sehingga metode tersebut juga dapat menangani referensi.
Menyuntikkan nilai string kosong dan nol
Jika Anda perlu meneruskan string kosong sebagai nilai, maka Anda dapat meneruskannya sebagai berikut -
<bean id = "..." class = "exampleBean">
<property name = "email" value = ""/>
</bean>
Contoh sebelumnya sama dengan kode Java: exampleBean.setEmail ("")
Jika Anda perlu meneruskan nilai NULL, maka Anda dapat meneruskannya sebagai berikut -
<bean id = "..." class = "exampleBean">
<property name = "email"><null/></property>
</bean>
Contoh sebelumnya sama dengan kode Java: exampleBean.setEmail (null)