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);
~~~~~~~~