본문 바로가기
Programing/Java & Spring

[SPRING3.0] 메세지 처리

by 슈퍼와이비 2013. 9. 12.
반응형

스프링에서 메세지 처리에 대해 정리합니다.

작업할 순서는 다음과 같습니다.

① application-context.xml 수정

② properties 파일 생성

③ Message 클래스 생성


1. 스프링에서는 메세지처리를 위한 인터페이스를 정의하고 있습니다.

우선 메세지처리를 위한 인터페이스인 MessageSource 를 구현해야 합니다. 물론 이 인터페이스를 구현하고 있는 클래스도 스프링에서 제공합니다.


스프링 설정파일 수정 ex)application-context.xml


<bean id="messageSource"

        class="org.springframework.context.support.ResourceBundleMessageSource">

    <property name="basenames">

        <list>

            <value>properties/common</value>

       <value>properties/error</value>

        </list>

    </property>

</bean>


ResourceBundleMessageSource 클래스를 정의하고 프로퍼티 파일을 정의합니다. 파일이 여러개일 경우도 문제 없이 정의할 수 있습니다.

ResourceBundelMessageSource 클래스만 가지고도 메세지 처리가 가능하지만 헬퍼클래스를 하나더 정의하겠습니다. 이것도 역시 스프링에서 제공하는 있는 클래스입니다.

헬퍼 클래스 MessageSourceAccessor 의 설명입니다.

*Helper class for easy access to messages from a MessageSource,

* providing various overloaded getMessage method.


스프링 설정파일 수정 ex)application-context.xml


<bean id="messageSourceAccessor"

        class="org.springframework.context.support.MessageSourceAccessor">

    <constructor-arg>

        <ref local="messageSource"/>

    </constructor-arg>

</bean>


다음은 MessageSourceAccessor 를 매개변수로 가지는 클래스를 만듭니다. 여기서 만든 클래스를 사용하여 실질적인 메세지 처리를 하게 됩니다.


스프링 설정파일 수정 ex)application-context.xml


<bean id="message" class="com.ntsys.mobile.frm.message.MessageResolver">

<property name="messageSourceAccessor" ref="messageSourceAccessor" />

</bean>



MessageResolver.java


import java.util.Locale;

import org.springframework.context.support.MessageSourceAccessor;


public class MessageResolver {

private static MessageSourceAccessor msAcc = null;

//private static Locale locale = Locale.getDefault();

private static Locale locale = Locale.KOREAN;

public void setMessageSourceAccessor(MessageSourceAccessor msAcc){

MessageResolver.msAcc = msAcc;

}

public static String getMessage(String key){

return msAcc.getMessage(key, locale);

}

public static String getMessage(String key, Object[] objs){

return msAcc.getMessage(key, objs, locale);

}

}



이제 properties 파일을 생성합니다.

common.properties


test.test.test = TEST



이제 메소드를 실행하여 값을 확인합니다.

1) getMessage를 static Method로 등록하여 클래스명으로 호출하는 방법

MessageResolver.getMessage("test.test.test");


2) MessageResolver를 bean으로 등록하여 사용하는 방법

@Resource(name="messageResolver")

MessageResolver messageResolver;

메소드내부에서) messageResolver.getMessage("test.test.test");

반응형