반응형
공통적으로 사용하는 메세지들이 있습니다.
이러한 메세지를 한 곳에서 정의하고 여러 곳에서 가져다 쓰는 형식으로 설정하여 개발을 하면 편리합니다.
1.message-context.xml
error.BadCredentials=아이디나 비밀번호가 맞지 않습니다. 다시 확인해주세요.
error.Disaled=계정이 비활성화되었습니다. 관리자에게 문의하세요.
error.CredentialsExpired=비밀번호 유효기간이 만료 되었습니다. 관리자에게 문의하세요.
error.Locked=계정이 잠겨있습니다. 관리자에게 문의하세요.
error.AccountExpired=계정이 만료되었습니다. 관리자에게 문의하세요.
message-context.xml을 생성합니다.
{파일명}_ko_KR.properties로 생성합니다.
_ko_KR은 언어별로 구분합니다.
properties 생성 후 파일 인코딩을 UTF-8로 변경해줍니다.
2. web.xml
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/appServlet/servlet-context.xml
/WEB-INF/spring/appServlet/message-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
파일 경로를 작성합니다.
3. message-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- Encoding 설정 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- Reload Cache 설정 -->
<property name="cacheSeconds" value="5"/>
<!-- basenames 설정: 아래처럼 하면 WEB-INF 밑의 message 폴더 아래의 labels로 시작하는 모든 Property-->
<property name="basenames">
<list>
<value>/WEB-INF/message/message</value>
</list>
</property>
</bean>
<!-- MessageSource를 사용하기 위한 Accessor 설정 -->
<bean id="messageSourceAccessor"
class="org.springframework.context.support.MessageSourceAccessor">
<constructor-arg ref="messageSource"/>
</bean>
<!-- MessageSource를 사용하기위한 MessageUtils 매핑 -->
<bean id="message" class="com.otrodevym.mfaw.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>
MessageSource의 bean id는 messageSource로 작성합니다.
3. MessageUtils.java
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
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());
// HttpServletRequest httpRequest =
((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// return msAcc.getMessage(code, httpRequest.getLocale());
}
public static String getMessage(String code, Object[] objs) {
return msAcc.getMessage(code, objs, Locale.getDefault());
}
}
4. 테스트
package com.otrodevym.mfaw.message;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import com.otrodevym.mfaw.common.MessageUtils;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations="file:src/main/webapp/WEB-INF/spring/**/**.xml")
public class MessageTest {
private final Logger logger = LoggerFactory.getLogger(MessageTest.class);
@Test
public void messageTest_만들어_놓은_메세지가_잘나오는지_테스트() {
// logger.debug(MessageUtils.getMessage("error.common"));
logger.debug("error.BadCredentials: "+MessageUtils.getMessage("error.BadCredentials"));
logger.error("error.BadCredentials: "+MessageUtils.getMessage("error.BadCredentials"));
}
}
반응형
'개발(합니다) > Java&Spring' 카테고리의 다른 글
Spring Security 정리 (5) : 로그인 성공 후 처리 (0) | 2019.01.21 |
---|---|
Spring Security 정리 (4) : 로그인 실패 후 처리 (2) | 2019.01.20 |
Java HashMap 정렬하기 (0) | 2019.01.18 |
Spring Security 정리(3) : https (0) | 2019.01.17 |
Spring Security 정리(2) : DB 연결 (0) | 2019.01.17 |