본문 바로가기

Programming/SpringFrameWork

[펌]Spring Framework 따라하기 [6] - ApplicationContext

Spring Framework 따라하기 [6] - ApplicationContext
이제 비즈니스 로직 부분에 관심을 돌려보자. 드디어 IoC의 진면목을 접하기 시작하는 것이다.

ContextLoader

앞에서 Spring MVC 부분을 다루는 과정에서 설정파일이 [servlet-name]-servlet.xml 파일이라고 하였다. 비즈니스 로직부분도 모두 이 파일에 설정을 할 수도 있지만, 그것이 현명한 방법은 아니다.

비즈니스 로직은 분리되는 것이 바람직하다. 이를 위해서 ContextLoader를 사용한다. 여기에는  ContextLoaderListener와 ContextLoaderServlet이 있는데, 우리는 ContextLoaderListener에 집중한다. Servlet 2.4에서는 이것이 편리하다.

web.xml에 다음과 같은 코드를 추가한다:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


주의할 점은 Log4J에 대한 설정이 위 코드보다 먼저 존재해야 한다는 것이다. 특히 Log4jConfigListenerContextLoaderListener보다 먼저 설정되어야 한다.
 
contextConfigLocation에 여러개의 applicationContext 파일들을 선언할 수 있다. 각각은 space문자로 구분하면 된다. (comma, semi colon도 된다.) 일단 여기서는 하나만 선언하자. 하지만, 곧 여러 개가 될 것이다.
 
공통 문자열 지정

각 웹 페이지의 title은 보통 공통적으로 지정하는 경향이 있다. 이를 각 페이지마다 일일이 달아주기 보다는 key-value 쌍으로 미리 지정해두고 이를 불러다 사용하는 것이 효율적이다. 보통 ResourceBundle을 사용한다.

/WebContent/WEB-INF/applicationContext.xml 파일을 다음과 같이 만든다:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
 <value>messages</value>
</property>
</bean>

 
</beans>

이렇게 하면, /WEB-INF/classes/messages.properties 파일을 시스템이 읽게 된다. 이 파일을 다음과 같이 만든다 :

title=SpringBloom
 
이제 home.jsp 파일의 title TAG를 변경한다:

 <title><fmt:message key="title" /></title>

이와 같은 방식으로 여러 페이지에서 공통으로 사용되는 문자열을 .properties 파일로 지정할 수 있다.