Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

DI_7_dependencyChange : AppleSpeaker.JAVA/SamsungTV.JAVA/SonySpeaker.JAVA/Speaker.JAVA/TV.JAVA/TVUser.JAVA/applicationContext7.xml 본문

SPRING/chapter02_DI

DI_7_dependencyChange : AppleSpeaker.JAVA/SamsungTV.JAVA/SonySpeaker.JAVA/Speaker.JAVA/TV.JAVA/TVUser.JAVA/applicationContext7.xml

GAWON 2023. 6. 26. 19:07
package org.joonzis.DI_7_dependencyChange;

public class AppleSpeaker implements Speaker{
	public AppleSpeaker() {
		System.out.println("-->AppleSpeaker 객체 생성");
	}
	@Override
	public void volumeUp() {
		System.out.println("-->AppleSpeaker 소리 올린다");
	}
	@Override
	public void volumeDown() {
		System.out.println("-->AppleSpeaker 소리 줄인다");
	}
	
}
package org.joonzis.DI_7_dependencyChange;

public class SamsungTV implements TV{
	
	//SamsungTV  클래스의 볼륨 조절 기능을 SonySpeaker 클래스를이용
	private Speaker speaker;
	private int price;
	
	
	public SamsungTV() {
		System.out.println("--> SamsungTV 객체(1)생성");
	}
	public SamsungTV(Speaker speaker) { // 객체받는 생성자
		System.out.println("--> SamsungTV 객체(2)생성");
		this.speaker = speaker; // 객체 생성자
	}
	public SamsungTV(Speaker speaker, int price) { // 객체받는 생성자
		System.out.println("--> SamsungTV 객체(3)생성");
		this.speaker = speaker; // 객체 생성자
		this.price = price;
	}
	
   @Override
   public void powerOff() {
      System.out.println("--> SamsungTV 전원 끈다(가격 : " + price + ")");
   }
   @Override
   public void powerOn() {
      System.out.println("--> SamsungTV 전원 켠다");
   }
   @Override
   public void volumeDown() {   
	   speaker.volumeDown();
   }
   @Override
   public void volumeUp() {
	   speaker.volumeUp();
   }
}
package org.joonzis.DI_7_dependencyChange;

public class SonySpeaker implements Speaker {
	public SonySpeaker() {
		System.out.println("-->SonySpeaker 객체 생성");
	}
	@Override
	public void volumeUp() {
		System.out.println("-->SonySpeaker 소리 올린다");
	}
	@Override
	public void volumeDown() {
		System.out.println("-->SonySpeaker 소리 줄인다");
	}
	
}
package org.joonzis.DI_7_dependencyChange;

public interface Speaker  {
	public void volumeUp();
	public void volumeDown();
}
package org.joonzis.DI_7_dependencyChange;

public interface TV {
   public void powerOn();
   public void powerOff();
   public void volumeUp();
   public void volumeDown();
   
   
}
package org.joonzis.DI_7_dependencyChange;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class TVUser {
   public static void main(String[] args) {
      
	   //1.Spring 컨테이너 구동
	   AbstractApplicationContext ctx = 
			   new GenericXmlApplicationContext("applicationContext7.xml");
	   
	   
	   TV stv =(SamsungTV)ctx.getBean("stv");
	   stv.powerOff();
	   stv.powerOn();
	   stv.volumeDown();
	   stv.volumeUp();
     
	   
	   
	   
   }
}
<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
	
	<!-- 
		
	 -->
	
	 <bean id="stv" class="org.joonzis.DI_7_dependencyChange.SamsungTV">
	 	<constructor-arg index="0" ref="sony"/><!-- ref참조변수 값을 넣는다 -->
	 	<constructor-arg index="1" value="27000"/><!-- value값을 넣는다 -->
	 </bean>
	 <bean id="sony" class="org.joonzis.DI_7_dependencyChange.SonySpeaker"></bean>
	 <bean id="AppleSpeaker" class="org.joonzis.DI_7_dependencyChange.SonySpeaker"></bean>
	
</beans>