티스토리 뷰

직전 포스팅과 마찬가지로 setter를 구성했다면, Namespace를 이용해서 객체나 값을 전달할 수도 있다.


우선, Namespace를 사용하기 위해서는 xml 설정 파일에서 하단 Namespace 탭을 클릭해서 p:Namespace 사용에 체크해야한다.

source를 확인해보면, Namespace가 자동으로 추가된 것을 확인할 수 있다.

 

다음으로 아래와 같이 bean 객체 선언부에서 p: 속성을 작성해주면 끝이다.

 

◎SamsungTV

package polymorphism;

public class SamsungTV implements TV{
	
	private Speaker speaker = null;
	private int price = 0;
	
	public SamsungTV() {
		System.out.println("SamsungTV --- 객체 생성");
	}

	public void setSpeaker(Speaker speaker) {
		System.out.println("setSpeaker");
		this.speaker = speaker;
	}

	public void setPrice(int price) {
		System.out.println("setPrice");
		this.price = price;
	}

	@Override
	public void powerOn() {
		System.out.println("SamsungTV --- 전원 켜기");
	}

	@Override
	public void powerOff() {
		System.out.println("SamsungTV --- 전원 끄기");
	}

	@Override
	public void volumeUp() {
		//System.out.println("SamsungTV --- 볼륨 켜기");
		speaker.volumeUp();
		System.out.println(this.price);
	}

	@Override
	public void volumeDown() {
		//System.out.println("SamsungTV --- 볼륨 줄이기");
		speaker.volumeDown();
	}
	
}

 

◎applicaionContext.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"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!--  Setter DI
	<bean id = "tv" class = "polymorphism.SamsungTV">
		<property name = "speaker" ref = "sony"></property>
		<property name = "price" value = "270000"></property>
	</bean>
	
	<bean id = "sony" class = "polymorphism.SonySpeaker"></bean>
 	-->
 	
 	<!--  p Namespace DI -->
 	<bean  id = "tv" class = "polymorphism.SamsungTV" p:speaker-ref="sony" p:price="389900">
 	</bean>
 	
 	<bean id = "sony" class = "polymorphism.SonySpeaker"></bean>
 	
</beans>

 

Comments