Bahar - Enjekte Edilen Koleksiyon
İlkel veri türlerinin nasıl yapılandırılacağını gördünüz. value kullanarak nitelik ve nesne referansları refBean yapılandırma dosyanızdaki <property> etiketinin özniteliği. Her iki durum da tekil değeri bir fasulyeye aktarmayla ilgilidir.
Şimdi, Liste, Küme, Harita ve Özellikler gibi Java Koleksiyonu türleri gibi çoğul değerleri iletmek isterseniz ne olur? Durumun üstesinden gelmek için Spring, aşağıdaki gibi dört tür koleksiyon yapılandırma öğesi sunar:
Sr.No | Öğe ve Açıklama |
---|---|
1 | <list> Bu, kablolamada yardımcı olur, yani bir değerler listesi enjekte ederek kopyalara izin verir. |
2 | <set> Bu, bir dizi değeri kablolamaya yardımcı olur, ancak herhangi bir kopya olmadan. |
3 | <map> Bu, ad ve değerin herhangi bir türde olabileceği ad-değer çiftleri koleksiyonunu enjekte etmek için kullanılabilir. |
4 | <props> Bu, ad ve değerin her ikisinin de Dize olduğu ad-değer çiftleri koleksiyonunu enjekte etmek için kullanılabilir. |
Herhangi bir java.util.Collection uygulamasını bağlamak için <list> veya <set> kullanabilirsiniz. array.
İki durumla karşılaşacaksınız (a) Koleksiyonun doğrudan değerlerini iletme ve (b) Koleksiyon öğelerinden biri olarak bir fasulyenin referansını iletme.
Misal
Çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları atalım -
Adımlar | Açıklama |
---|---|
1 | SpringExample adıyla bir proje oluşturun ve altında bir com.tutorialspoint paketi oluşturun .src oluşturulan projedeki klasör. |
2 | Bahar Merhaba Dünya Örneği bölümünde açıklandığı gibi Harici JAR Ekle seçeneğini kullanarak gerekli Bahar kitaplıklarını ekleyin . |
3 | Java sınıfları oluşturma JavaCollection ve MainApp altında com.tutorialspoint paketinin. |
4 | Beans yapılandırma dosyasını Beans.xml altında oluşturun.src Klasör. |
5 | Son adım, tüm Java dosyalarının ve Bean Yapılandırma dosyasının içeriğini oluşturmak ve aşağıda açıklandığı gibi uygulamayı çalıştırmaktır. |
İşte içeriği JavaCollection.java dosya -
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;
}
}
Aşağıdakilerin içeriği MainApp.java dosya -
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();
}
}
Yapılandırma dosyası aşağıdadır Beans.xml tüm koleksiyon türleri için yapılandırmaya sahip olan -
<?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>
Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır -
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}
Fasulye Referanslarının Enjekte Edilmesi
Aşağıdaki Bean tanımı, koleksiyonun öğelerinden biri olarak fasulye referanslarının nasıl enjekte edileceğini anlamanıza yardımcı olacaktır. Aşağıdaki kod parçacığında gösterildiği gibi referansları ve değerleri birlikte karıştırabilirsiniz -
<?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>
Yukarıdaki fasulye tanımını kullanmak için, ayarlayıcı yöntemlerinizi referansları da işleyebilecek şekilde tanımlamanız gerekir.
Boş ve boş dize değerleri enjekte etme
Değer olarak boş bir dizge iletmeniz gerekirse, aşağıdaki gibi iletebilirsiniz -
<bean id = "..." class = "exampleBean">
<property name = "email" value = ""/>
</bean>
Önceki örnek Java koduna eşdeğerdir: exampleBean.setEmail ("")
Bir NULL değeri iletmeniz gerekiyorsa, aşağıdaki gibi geçebilirsiniz -
<bean id = "..." class = "exampleBean">
<property name = "email"><null/></property>
</bean>
Yukarıdaki örnek Java koduna eşdeğerdir: exampleBean.setEmail (null)