Spring #08 Application Context

underlier12·2020년 2월 9일
0

SPRING

목록 보기
8/25

08. Application Context

IoC Container 사용하기

setting.xml을 통해 Dependency Injection에 대한 내용들을 담았기에 이를 활용할 수 있도록 코드에 반영해야 한다. 이 때 사용되는 것이 Application Context 클래스이며 IoC Container의 실체라고 볼 수 있다. Application Context는 4가지 종류로 구현이 되며 그 중 가장 많이 사용되는 ClassPathXmlApplicationContext는 루트경로로부터의 상대경로를 기입해 xml이 어디에 있는지 알려준다.

image.png

위의 내용을 코드로 작성하면 오류가 발생하는데 이는 스프링 라이브러리를 추가하지 않았기 때문이다. 여기서는 자바 프로젝트를 메이븐 프로젝트로 변환하여 Dependency를 추가한다.

image.png

image.png

위와 같이 손쉽게 메이븐 프로젝트로 변경하고 다음과 같이 생성된 pom.xml에 Dependency를 입력해준다.

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

이후 Program 파일에서 ApplicatoinContext를 임포트하여 사용할 수 있다. 이제 여기에 담긴 것들을 사용할 수 있는데 2가지 방법이 있다.

  1. id로 가져오기
  2. class로 가져오기

id로 가져올 경우 객체로 반환되기에 이를 캐스팅하는 작업이 필요하며 class로 가져올 때에는 해당 클래스로 가져오록 지정하기에 더 선호되는 방법이다.

Program.java

package spring.di;

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

import spring.di.ui.ExamConsole;

public class Program {

	public static void main(String[] args) {
		
		/* 스프링에 지시하는 방법으로 변경 
		Exam exam = new NewlecExam();
		ExamConsole console = new GridExamConsole();
		
		console.setExam(exam);
		*/
		
		ApplicationContext context = 
				new ClassPathXmlApplicationContext("spring/di/setting.xml");
		
		ExamConsole console = (ExamConsole) context.getBean("console");
//		ExamConsole console = context.getBean(ExamConsole.class);
		console.print();
	}

}

이후 setting.xml에서 GridExamConsole을 InlineExamConsole로 바꿔도 정상적으로 동작한다

profile
logos and alogos

0개의 댓글