Spring – Ders 4 Injection – Reference Bean

Merhaba Arkadaslar,
Bir onceki derste Setter Injection ve Constructor Injection konusunu islemistik. Bu dersimizde reference bean konusunu isleyecegiz.

Oncelikle yeni bir arabirim olusturalim

Readable.java

package erguder.levent_04.referencebean;

public interface Readable {
	public abstract void read();
}

Bu arabirimi uygulayan 2 adet sinifimiz olacak.

Book.java

package erguder.levent_04.referencebean;

public class Book implements Readable {

	@Override
	public void read() {
		System.out.println("Spring Book");
	}

}


PDF.java

package erguder.levent_04.referencebean;

public class PDF implements Readable {

	@Override
	public void read() {
		System.out.println("Spring PDF Book");
	}

}


Document.java

package erguder.levent_04.referencebean;

public class Document {

	private Readable readable;
	private String subject;

	public Readable getReadable() {
		return readable;
	}

	public void setReadable(Readable readable) {
		this.readable = readable;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public void readDocument() {
		System.out.println("Reading : " + subject);
		readable.read();
	}

}

Dikkat ederseniz Document sinifimizda Readable turunde bir referans degisken bulunmaktadir. Getter / Setter metotlariyla birlikte readDocument metodu bulunmaktadir. readable referans degiskeni ile read() metodunu cagirmaktayiz. Burada hangi read metodu cagirilacak bu gelen objenin turune baglidir.

tutorial_04.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="bookId" class="erguder.levent_04.referencebean.Book"></bean>
	<bean id="pdfId" class="erguder.levent_04.referencebean.PDF"></bean>

	<bean id="documentId" class="erguder.levent_04.referencebean.Document">
		<property name="subject" value="Spring Framework"></property>
		<property name="readable" ref="bookId"></property>		
	</bean>

</beans>

xml dosyamizi inceleyelim, oncelikle Book ve PDF siniflarimiz icin bean tanimlamasi yaptik. Daha sonrasinda Document sinifimiz icin bir bean tanimlamasi yaptik. Burada bir onceki derste inceledigimiz <property> etiketi yardimiyla , name ozelligi  ( Document sinifimizdaki degisken adimizla ayni olduguna dikkat edelim) ve value ozelligine verdigimiz deger ile degiskenimize istedigimiz veririz.
readable degiskenimiz bir referans degisken oldugu icin burada bir reference bean vermemiz gerekmektedir. ref ozelligini bir onceki derste de kullanmistik ama burada <constructor-arg> etiketi icerisinde degil <property> etiketi icerisinde de kullanabilecegimizi gorduk.

Son olarak TestDocument sinifimizi calistiralim ve sonucu gorelim.

package erguder.levent_04.referencebean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDocument {

	public static void main(String[] args) {
	    ApplicationContext context = 
	            new ClassPathXmlApplicationContext("tutorial_04.xml");	    

	    Document document = (Document) context.getBean("documentId");
	    document.readDocument();
	}

}

Reading : Spring Framework
Spring Book

xml dosyamiz icerisinde ref ozelligi icin ,pdfId yi verirsek de su ciktiyi aliriz.

<property name="readable" ref="pdfId"></property>

Reading : Spring Framework
Spring PDF Book

Yazimi burada sonlandiriyorum 🙂

Kaynak Kodlar: SpringProject_v4

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *