Spring – Ders 6 Wiring Collection – 2 Merge
Merhaba Arkaslar,
Bir onceki derste , Spring Framework uzerinde Java Collection yapisini incelemistik. Burada Properties Collection yapisinda bir ornek yapacagiz ve bunun uzerinden Merge kavramini inceleyecegiz.
List, Map, Set gibi en onemli Collection yapilarini incelemistik Properties kullanimi da benzerlik gostermektedir. Properties, java.util paketi altindadir.
PropertyCollection.java
package erguder.levent_06.collection.prop; import java.util.Properties; public class PropertyCollection { private Properties pros; public Properties getPros() { return pros; } public void setPros(Properties pros) { this.pros = pros; } @Override public String toString() { return "[Properties=" + pros + "]"; } }
burada Properties turunden bir degisken tanimladik ve getter/setterlarini olusturduk.
<props> java.util.Properties koleksiyonu icin bir eleman tanimlamak icin kullanilir.
<prop> , <props> uyesi tanimlamak icin kullanilir.
tutorial_06_prop.xml
<?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 id="parent" class="erguder.levent_06.collection.props.PropertyCollection"> <property name="pros"> <props> <prop key="key1">Java</prop> <prop key="key2">Spring</prop> </props> </property> </bean> </beans>
PropertyTest.java
package erguder.levent_06.collection.props; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class PropertyTest { public static void main(String[] args) { BeanFactory beanfactory = new ClassPathXmlApplicationContext( "tutorial_06_prop.xml"); PropertyCollection coll = (PropertyCollection) beanfactory.getBean("propertyCollId"); System.out.println(coll); } }
Test sinifimizi calistirdigimizda cikti olarak ;
Properties Collection [{key2=Spring, key1=Java}]
Collection Merging
Koleksiyon yapisinda kalitim ve override islemini saglar. Daha iyi anlayabilmek icin ornegimiz uzerinde devam etmekte fayda var 🙂
xml dosyamiza su kodlari ekleyecegiz.
<bean id="child" parent="parent"> <property name="pros"> <props merge="true"> <prop key="key1">Java Override</prop> <prop key="merge key1">JSF</prop> <prop key="merge key2">Oracle</prop> </props> </property> </bean>
parent ozelligi icin ilk tanimladigimiz bean’in idsi olan parent ‘ i verdik.
merge yapisini kullanabilmek icin <props merge=”true”> yapiyoruz.
key1 id degerini daha once kullanmistik burada tekrar kullaniyoruz boylece diger degeri override ediyoruz.
Bununla birlikte diger degeri kalitiriz.
MergeTest sinifimizda idsi child olan bean’i cagiralim ve sonucu gorelim..
MergeTest.java
package erguder.levent_06.collection.props; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MergeTest { public static void main(String[] args) { BeanFactory beanfactory = new ClassPathXmlApplicationContext( "tutorial_06_prop.xml"); PropertyCollection coll = (PropertyCollection) beanfactory.getBean("child"); System.out.println(coll); } }
Properties Collection [{merge key2=Oracle, merge key1=JSF, key2=Spring, key1=Java Override}]
child bean de 3 adet deger olmasina ragmen parent bean’ine ait key2 degeri de geldi. child bean ve parent bean de key1 ortak oldugu icin bu degeri override ettik.
merge = true ozelligini kaldiracak olursak sadece child bean’ine ait 3 adet degeri getirecektir, bir nevi kalitim yapisi olarak dusunebiliriz.
Kaynak Kodlar: SpringProject_v6
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust
Leave a Reply