1. Spring MessageSource 구현체
1.1. org.springframework.context.support.StaticMessageSource
: MessageSource의 가장 간단한 구현체. 기본적인 다국어 기능을 지원하면서 테스트용도로 사용됩니다.
1.2. org.springframework.context.support.ResourceBundleMessageSource
: ResourceBundle Class, MessageFormat Class 기반으로 만들어져 Bundle에 특정 명칭으로 접근이 가능합니다.
1.3. org.springframework.context.support.ReloadableResourceBundelMessageSource
: Property 설정을 통해 Reloading 정보를 입력해 주기적인 Message Reloading을 수행합니다.
: Application 종료없이도 실행 도중에 변경이 가능한 장점이 있습니다.
2. MessageSource 샘플 구조

2.1. web.xml에서 message-context.xml을 읽도록 설정한다.
2.2. message properties 생성한다. ex) labels_ko.properties
2.3. message-context.xml에 MessageSource와 사용하기 위한 MessageSourceAccessor 설정한다.
2.4 MessageSourceAccessor를 사용할 수 있도록 MessageUtils.java를 생성한다.
2.5 controller에서 테스트한다.
3.Web.xml 설정
//context road 방식 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/context-*.xml</param-value> </context-param> //servlet mapping 방식 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/springmvc/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
4. Message property 파일 작성
4.1. Message Source의 property 파일은 Nameing Rule을 지켜야 한다. ex) {basename}_언어코드_국가코드.properties
4.2. {basename}은 개발자가 사용목적에 따라 임의로 지정할 수 있다.
{basename}.properties | Default Message 시스템 언어 및 지역에 맞는 property 파일이 존재하지 않을경우 사용됨 |
{basename}_en.properties | 시스템 언어 코드가 영어일 때 사용됨 |
{basename}_ko.properties | 시스템 언어 코드가 한글일 때 사용됨 |
{basename}_en_UK.properties | 시스템 언어 코드가 영어일때 영국(국가코드)을 위한 메시지로 사용됨 |
5. Application Context Setting
<?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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> // 프로퍼티 파일 위치 설정 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>classpath:/spring/message/message-common</value> </list> </property> <property name="cacheSeconds"> <value>60</value> </property> // 한글 깨짐 방지 기본 인코딩 UTF-8 설정 <property name="defaultEncoding" value="UTF-8"/> </bean> // MessageSource를 사용하기 위한 Accessor 설정 <bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor"> <constructor-arg ref="messageSource"/> </bean> // MessageSource를 사용하기위한 MessageUtils 매핑 <bean id="message" class="org.common.MessageUtils"> <property name="messageSourceAccessor" ref="messageSourceAccessor"/> </bean> // Default Location 설정 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="ko"></property> </bean> </beans>
6. MessageUtils
package org.common; import java.util.Locale; import org.springframework.context.support.MessageSourceAccessor; public class MessageUtils { private static MessageSourceAccessor msAcc = null; public void setMessageSourceAccessor(MessageSourceAccessor msAcc) { MessageUtils.msAcc = msAcc; } public static String getMessage(String code) { return msAcc.getMessage(code, Locale.getDefault()); } public static String getMessage(String code, Object[] objs) { return msAcc.getMessage(code, objs, Locale.getDefault()); } }
'낙서장 > Spring' 카테고리의 다른 글
Maven 외부 라이브러리(jar) 추가 (0) | 2022.12.05 |
---|---|
MyBatis mapper $ # 차이 (0) | 2022.07.25 |
dbcp 라이브러리 - HikariCP (0) | 2022.06.10 |
SPring Sms Library - 쿨에스엠에스 Setting(2) (0) | 2022.06.10 |
Spring Sms Library(1) (0) | 2022.06.10 |