Spring Ders12 - Referencing Beans
Bir bean diğer beane referans olarak verilebileceğini daha önceki derslerde göstermiştik. Bu derste referanslama işleminin tüm farklı şekillerini göstereceğiz.
Bir beani diğer beane
- Inner bean referanslama yaklaşımıyla,
- Genel bean referanslama yaklaşımıyla,
- Local bean referanslama yaklaşımıyla,
- Bean identifier (tanımlayıcı) referanslama yaklaşımıyla local ve genel olarak yapılabilir.
Inner Bean Referanslama Yaklaşımı
Bir beane isimsiz bir bean setter metodu veya constructor metodu yardımıyla referans olarak verilebilir.
<bean id="..." class="...">
<property name="...">
<bean class="..."></bean>
</property>
</bean>
<bean id="..." class="...">
<constructor-arg>
<bean class="..."></bean>
</constructor-arg>
</bean>
|
Eğer bir bean referans olarak alacağı bean ile aynı .xml config dosyasında ise, o zaman local bean referanslama yaklaşımı kullanılabilir, zorunlu değildir. Referanslama işlemi her zamanki gibi setter metodu veya constructor metodu yardımıyla yapılabilir.
Bean Identifier Referanslama Yaklaşımı ( Local )
Bean Identifier Referanslama Yaklaşımı ( Genel )
Diğer yaklaşımların örnekleri daha önce yapıldığından, idref local özelliğinin de spring 4 versiyonuyla birlikte kaldırıldığından dolayı bean identifier referanslama yaklaşımı ile ilgili bir örnek program yapalım.
Main.java
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); B b=(B)context.getBean("b"); System.out.println("b beani üzerinden A sınıfından oluşturulan beanin ismi : "+ b.getA()); //referanslama işleminde sadece beanin String değeri olarak ismi aktarıldı. } }
A.java
package test; public class A { public A() { System.out.println("A nesnesi oluşturuldu."); } }
B.java
package test; public class B { private String a; public B() { System.out.println("B nesnesi oluşturuldu."); } public String getA() { return a; } public void setA(String a) { this.a = a; } }
applicationContext.java
<?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.xsd"> <bean id="beanA" class="test.A"></bean> <bean id="b" class="test.B"> <property name="a"> <idref bean="beanA" /> </property> </bean> </beans>
Yorumlar
Yorum Gönder