국비

[ 40일차 1 ] 수업 정리 - Spring

코딩하는냥이 2025. 6. 12. 17:35
반응형

오늘은 Spring Framework의 기본 구조를 학습하고, 간단한 의존성 주입(DI: Dependency Injection) 실습을 통해 Spring 프로젝트의 작동 원리를 이해했습니다. 특히 XML 기반 설정을 사용하여 객체를 생성하고 제어하는 흐름을 실습했습니다.


📦 사용 환경

  • Apache Tomcat: 9.0.97
  • JDK 버전: 11.0.0.2 (환경변수 수정 완료)
  • Spring Tool Suite (STS): 3.9.18

📌 예제 코드

1. TV 인터페이스

package example;

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

2. samsungTV 클래스 (구현체)

package example;

public class samsungTV implements TV {
	public void powerOn() {
		System.out.println(getClass().getSimpleName() + " 전원을 켭니다.");
	}
	public void powerOff() {
		System.out.println(getClass().getSimpleName() + " 전원을 끕니다.");
	}
	public void volumeUp() {
		System.out.println(getClass().getSimpleName() + " 소리를 올립니다.");
	}
	public void volumeDown() {
		System.out.println(getClass().getSimpleName() + " 소리를 내립니다.");
	}
}

3. TvUser 실행 클래스

package example;

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

public class TvUser {
	public static void main(String[] args) {
		AbstractApplicationContext factory =
			new GenericXmlApplicationContext("applicationContext.xml");

		TV tv = (TV) factory.getBean("tv");
		tv.powerOn();
		tv.volumeUp();
		tv.volumeDown();
		tv.powerOff();
	}
}

4. applicationContext.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-4.3.xsd">

	<bean id="tv" class="example.samsungTV"/>
</beans>

💬 코드 설명

  • TV는 전원을 켜고/끄고, 볼륨을 조절할 수 있는 인터페이스입니다.
  • samsungTV는 TV를 구현한 클래스이며, 메서드마다 해당 동작을 콘솔에 출력합니다.
  • TvUser 클래스는 Spring Context를 통해 tv 객체를 받아 실행합니다.
  • XML 설정 파일인 applicationContext.xml에서 example.samsungTV를 Bean으로 등록하고, id="tv"로 주입합니다.

💡 정리하자면, 40일차에는 Spring의 핵심 기능인 의존성 주입(DI) 개념을 실습을 통해 학습했습니다. 인터페이스와 구현체를 분리하여 관리하고, XML 기반 설정으로 객체를 외부에서 주입함으로써 결합도를 낮추는 구조를 체험했습니다. 이는 추후 다양한 객체를 유연하게 교체하거나 확장할 수 있는 기반이 됩니다.