본문 바로가기
Spring & Spring Boot

DI_3

by minNa2 2023. 7. 4.

LgTV.java

package org.joonzis.DI_3;

public class LgTV implements TV{
	
	public LgTV() {
		System.out.println("--> LgTV 객체 생성");
	}
	
	@Override
	public void powerOn() {
		System.out.println("--> LgTV 전원 켠다");
	}
	
	@Override
	public void powerOff() {
		System.out.println("--> LgTV 전원 끈다");
	}
	
	@Override
	public void volumeUp() {
		System.out.println("--> LgTV 소리 올린다");
	}
	
	@Override
	public void volumeDown() {
		System.out.println("--> LgTV 소리 내린다");
	}
}

SamsungTV.java

package org.joonzis.DI_3;

public class SamsungTV implements TV { 
	
	public SamsungTV() {
		System.out.println("--> SamsungTV 객체 생성");
	}
	
	@Override
	public void powerOn() {
		System.out.println("--> SamsungTV 전원 켠다");
	}
	
	@Override
	public void powerOff() {
		System.out.println("--> SamsungTV 전원 끈다");
	}
	
	@Override
	public void volumeUp() {
		System.out.println("--> SamsungTV 소리 올린다");
	}
	
	@Override
	public void volumeDown() {
		System.out.println("--> SamsungTV 소리 내린다");
	}
}

TV.java

package org.joonzis.DI_3;

public interface TV {
	public void powerOn();
	public void powerOff();
	public void volumeUp();
	public void volumeDown();
}

TVUser.java

package org.joonzis.DI_3;

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("applicationContext3.xml");
		
		// 2. Spring 컨테이너로부터 필요한 객체 요청
		// 컨테이너에서 객체 먼저 생성하고 자바 코드에서 사용해서 
		// 코드 실행 시 ~~ 객체 생성이 제일 먼저 출력
		TV ltv = (LgTV)ctx.getBean("ltv");
		ltv.powerOn();
		ltv.volumeUp();
		ltv.volumeDown();
		ltv.powerOff();
		
		System.out.println("------------------------");
		
		TV stv = (SamsungTV)ctx.getBean("stv");		
		stv.powerOn();
		stv.volumeUp();
		stv.volumeDown();
		stv.powerOff();
	}
}

applicationContext3.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: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">
	
	
	<!-- 
		해당 xml 파일 생성 방법
		1. Spring Bean Configuration File
		2. 하단 탭 중 Namespaces에서 Context 체크 -> 상단 Beans 태그에 context 추가
	 -->
	 
	 <!-- 
	 	Spring Bean Configuration File
	 	Bean 생성 방법 1
	 	<bean id="객체명(인스턴스명)" class="클래스명">
	 		<property name="필드명1">
	 			<value>값1</value>		// 문자든 숫자든 큰 따옴표 없이 그냥 적는다.
	 		</property>
	 		<property name="필드명1" value="값2">	// 문자든 숫자든 큰 따옴표로 적는다.
	 		** property 를 이용하여 set 주입
	 		
	 		<constructor-arg name="필드명3" value="값3" />
	 		** constructor 를 이용하여 생성자 주입		
	 	</bean>
	  -->
	  
	  <!-- 
	  	scope : singleton, prototype
	  	singleton : 객체를 하나만 만든다.
	  	prototype : 객체를 새로 계속 만든다.
	  	default 값은 singleton 이다.
	   -->

	<bean id="ltv" class="org.joonzis.DI_3.LgTV" scope="prototype"></bean>
	<!-- LgTV ltv = new LgTV(); -->

	<bean id="stv" class="org.joonzis.DI_3.SamsungTV"></bean>	<!-- 기본값 싱글톤 -->
	<!-- SamsungTV stv = new SamsungTV(); -->

	
</beans>
반응형

'Spring & Spring Boot' 카테고리의 다른 글

DI_5_constructor  (0) 2023.07.04
DI_4  (0) 2023.07.04
DI_2  (0) 2023.07.04
DI_1  (0) 2023.07.03
Java 정리 - Spring (계속 추가)  (0) 2023.06.29