본문 바로가기

프로그래밍/Spring Boot

Spring Boot_Message 사용법

메시지란 ? 

메시지는 메시지 코드와 메시지 콘텐츠를 정리하여, 메시지 코드를 통해 내용을 호출하는 방법이다. 

 
 

메시지를 사용하는 경우

  • 클라이언트에 보여줘야하는 문자 관리
  • 다국어 지원 관리
  • 에러 코드와 에러 메시지 관리
  • 반복적으로 사용하는 문자열 관리

Message를 사용하기 위해서는 MessageSource의 구현체인 ResourceBundleMessageSource를
Bean에 등록해야 한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@Configurer
public class WebMvcConfig implements WebMvcConfigurer {
    
    @Bean
    public MessageSource messageSource() { // 빈 이름을 꼭 'messageSource'로 명시
 
        ResourceBundleMessageSource rbm = new ResourceBundleMessageSource();
 
        // 인코딩 방식 설정
        rbm.setDefaultEncoding("utf-8");
 
        // 메시지를 관리할 파일 이름 지정
        // message는 폴더명 messages는 properties 파일 이름
        rbm.setBasenames("message.messages");
 
        return rbm;
    
    }
    
    // 언어 변경을 위한 인터셉터 생성 
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor {
    
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        
        // lang은 url 매개변수 이름을 나타냄 
        // http://example.com/page?lang=KR이나 http://example.com/page?lang=ENG와 같이 주소를 설정하여
        // 언어 변경을 감지할 수 있음
        interceptor.setParameName("lang");
        
        return interceptor;
    }
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }
    
}
cs

 


 

src/main/resources 아래 message 폴더 생성

> messages_KR.properties 파일 생성
> messages_ENG.properties 파일 생성
 
 
 

message_KR.properties 파일

1
2
3
4
helloWorld=안녕 세계
 
common.hi=안녕
common.bye=잘가
cs

 

message_ENG.properties 파일

1
2
3
4
helloWorld=helloWorld
 
common.hi=hi
common.bye=bye
cs

다국어 처리를 위해 properties파일에 동시에 적어주는 것이 좋다. 
언어 변경을 감지하면 영어, 한국어 알아서 바뀜
 
 
 

jsp 파일

1
2
3
4
5
6
7
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
 
<body>
    <h1><spring:message code="helloWorld" /></h1>
    <h1><spring:message code="common.hi" /></h1>
    <h1><spring:message code="commonn.bye" /></h1>
</body>
cs

언어 변경을 감지하여 문자가 출력됨