Back-end/Spring-핵심& webMVC

MessageSource 메시지 국제화 처리

prden 2021. 6. 5. 11:29

1. applicationContext.xml에 아래와 같은 설정을 해준다. 

 <!--message sources-->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:application"/>
        <!-- Encoding 설정 -->
        <property name="defaultEncoding" value="UTF-8"/>
        <!-- Reload Cache 설정 -->
        <property name="cacheSeconds" value="5"/>
    </bean>
    <bean id="LocaleResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="ko"/>
    </bean>
    //빈 각체에서 메시지 이용하기 위한 것
    //ApplicationContextAware 인터페이스 구현 or
    //MessageSourceAware 인터페이스 구현해서 getMessage()메서드 이용해서 메시지 사용해도 된다. 
    
    <bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor">
        <constructor-arg ref="messageSource"/>
    </bean>
    <bean id="message" class="com.legalcounsel.Common.LocaleMessage">
        <property name="msAcc" ref="messageSourceAccessor"/>
    </bean>

 

2. LocaleMessage 클래스 구현

package com.legalcounsel.Common;

import org.springframework.context.support.MessageSourceAccessor;

import java.util.Locale;

public class LocaleMessage {
    private static MessageSourceAccessor msAcc = null;

    public void setMsAcc(MessageSourceAccessor msAcc) {
        this.msAcc = msAcc;
    }

    public static String getMessage(String key){
        return msAcc.getMessage(key, Locale.getDefault());
    }

    public static String getMessage(String key, Object[] objs){
        return msAcc.getMessage(key, objs, Locale.getDefault());
    }


}

 

3. 파일 업로드에서 파일 경로 찾아오는 경우 사용함.

 String filePath = LocaleMessage.getMessage("info.filePath");

 public List<FileVO> saveAllFiles(List<MultipartFile> upfiles) {
        List<FileVO> filelist = new ArrayList<>();
        
        String filePath = LocaleMessage.getMessage("info.filePath");

        for (MultipartFile uploadfile : upfiles) {
            if (uploadfile.getSize() == 0) {
                continue;
            }
            String newName = getNewName();

            saveFileOne(uploadfile, getRealPath(filePath, newName), newName);

~~~~~~~~