Merhaba arkadaşlar, bu yazımda Constructor ve Setter Injection nasıl yapıldığını anlatacağım. Örnek üzerinden anlatalım:
1-)Constructor Injection
Constructor injection, adından da anlaşılacağı üzere yapıcı kullanılarak yapılan inject işlemidir. Yani yapıcıya parametre olarak verilen değer ile inject işlemi yapılır. Şimdi örnekte inceleyelim.
Address.java
1 2 3 4 5 6 7 8 9 |
public class Address { private String street; private int no; public Address() { System.out.println("Adres Yapıcısı Çalıştı"); } //Getters and Setters |
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class Person { private String name; private int age; private Address address; public Person(String name, int age, Address address) { this.name = name; this.age = age; this.address = address; } public Person(String name) { this.name = name; } public Person(int age) { this.age = age; } public Person(Address address) { this.address=address; } public void print() { System.out.println("Name=>"+getName()+" age=>"+getAge()+" Adress Street=>"+getAddress().getStreet()+" No=>"+getAddress().getNo()); } //Getters and Setters |
Görüldüğü gibi Person sınıfımızda 4 adet yapıcı vardır. Yapıcıların her biri farklı parametre almaktadır. Bu yapıcıların her birine birazdan application.xml dosyamızda farklı özellikler ve değerler kullanarak inject edeceğiz.
Test.java
1 2 3 4 5 6 7 8 9 |
public class Test { public static void main(String[] args) { ApplicationContext applicationContext=new ClassPathXmlApplicationContext("_003_application.xml"); Person person=applicationContext.getBean("person",Person.class); person.print(); ((ClassPathXmlApplicationContext)applicationContext).close(); } } |
_003.application.xml
1 2 3 4 5 |
<bean id="person" class="_003_constructor_injection_xml.Person"> <constructor-arg name="name" value="Furkan"/> <constructor-arg name="age" value="23"/> <constructor-arg name="address" ref="address"/> </bean> |
Üç parametre ve parametre sıralaması name,age,address olan parametreye inject işlemi uygulanır.
1 2 3 |
<bean id="person" class="_003_constructor_injection_xml.Person"> <constructor-arg name="address" ref="address"></constructor-arg> </bean> |
Tek parametreli ve parametresi Address türünden olan yapıcı çalışır. Ref ile bean inject edilir
1 2 3 4 5 |
<bean id="person" class="_003_constructor_injection_xml.Person"> <constructor-arg index="0" value="Furkan"/> <constructor-arg index="1" value="23"/> <constructor-arg index="2" ref="address"/> </bean> |
İndex özelliği ile verilen değer olan parametreye value ile değer ataması yapılır. Yani index’i 1 olan parametreye 23 ataması yapılır.
1 2 3 |
<bean id="person" class="_003_constructor_injection_xml.Person"> <constructor-arg type="_003_constructor_injection_xml.Address" ref="address"/> </bean> |
Görüldüğü üzere burada tek parametreli yapıcıyla çalışılacak fakat 3 adet tek parametreli yapıcı var. Burada önemli olan Type özelliğidir. Type özelliğine verilen değere göre, hangi yapıcı çalışacağını belirleriz. Yani tipi Address olan ve tek parametreli yapıcı çalışacaktır. Şimdi Address bean’imizi oluşturalım ve değişkenlerimize set metotları ile değer ataması yapalım.
2-)Setter Injection
1 2 3 4 |
<bean id="address" class="_003_constructor_injection_xml.Address"> <property name="street" value="İstanbul"/> <property name="no" value="34"/> </bean> |
Görüldüğü üzere address beanimize <property> ile setter injection atamasını yaptık. Street değişkenine İstanbul, no değişkenine de 34 değerini atadık. Bu yazıyı burada bitiriyorum diğer yazılarımda görüşmek üzere…