본문 바로가기
BackEnd/Spring

[Spring] Application Context 작성하기

by summer_light 2021. 8. 28.

Application Context 작성하기

지시서(DI)를 읽어와서 그 지시대로 객체를 만들고, 그 만들어진 객체를 활용해야한다.

이 때 주체를 생성해주고, 조립해주는 인터페이스가 ApplicationContext이다. 

ApplicationContext을 작성한 이후에는 ApplicationContext 코드의 수정 없이 지시서(xml)만 수정하면 되도록하는 것이 목표이다. 

 

 

 


ApplicationContext 종류

지시서를 넘길 때지 지시서의 위치를 어떻게 표현하느냐에 따라 나뉜다.

위의 세 가지는 xml Configuration이며, 네 번째는 java Configuration이다.

  • ClassPathXml: Application의 root으로부터 경로 설정(실행 될 때의 위치) / 가장 보편적
  • FileSystemXml: C드라이브부터 경로 설정
  • XmlWebApplicationContext: 웹의 URL을 통해 지정
  • AnnotationConfig: 파일로 두는 것이 아니라 Annotation으로 두고 스캔하는 방법으로 사용

 

 

 

ApplicationContext 선언하기 

IoC 의 이름이 ApplicationContext이다.

ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");

Application의 root 이므로 src 폴더를 의미한다. 그러므로 package이름까지 넣어주어야 한다. 

 

 

 

ApplicationContext 를 이용하여 ExamConsole 객체 불러오기

1.id로 가져오는 경우: "id"

어떤 객체인지 알 수 없기 때문에 캐스팅이 요구된다.

ExamConsole console = (ExamConsole) context.getBean("console"); 
console.print();​

 

2. 클래스로 가져오는 경우: 클래스이름.class
캐스팅을 하지 않아도 되기 때문에 더 선호되는 방법이다.

ExamConsole console = context.getBean(ExamConsole.class); 
console.print();​

 

 

 

 

EX01. 컬렉션 사용하기

XML 파일에 정의되어 있던 exams 빈을 Context 파일에서 사용한다.

 

<XML파일에서 정의된 exams>

<bean id="exams" class="java.util.ArrayList">
	<constructor-arg>
    		<bean class="spring.di.entity.NewlecExam" p:kor="10" p:eng="30" p:com="50"/>
        	<ref bean="exam"/>
	</constructor-arg>
</bean>

 

<Context 파일에서 사용하기>

List<Exam> exams = context.getBean("exams");
//= List<Exam> exams = new ArrayList<>(); 원래 같았다면 이렇게 사용했을 것

exams.add(new NewlecExam(10, 30, 50));

for(Exam e : exams) 
	System.out.println(e);

 

댓글