국제화(i18n)을 제공하는 인터페이스이다. 메세지 설정 파일들을 모아놓은 뒤, 접속한 국가 환경에 따라 쉽게 각 지역에 맞춘 메세지를 제공할 수 있다.
[파일이름]_[언어]_[국가].properites 형식으로 메세지 파일을 추가해 설정 파일을 세팅할 수 있다.
예시는 아래와 같다.
먼저 resources
하위에 다음과 같이 properties 파일을 추가한다.
# message.properties
greeting = Hello, {0}
# message_ko.properties
greeting = 안녕, {0}
Spring 환경에서는 별도로 MessageSource
를 Bean으로 등록해주어야 하지만, SpringBoot에서는 properties 파일만 생성하여도 자동으로 이것들을 Bean으로 관리해주기 때문에, 별도로 Bean으로 등록하는 과정을 거치지 않아도 된다.
간단하게 아래와 같이 코드를 작성해 사용해 보았다.
@RestController
public class TestController {
@Autowired
private MessageSource messageSource;
@GetMapping("/test1")
public void test1() throws RuntimeException {
String greetingKR = messageSource.getMessage("greeting", new String[]{"채상엽"}, Locale.KOREA);
String greetingEN = messageSource.getMessage("greeting", new String[]{"채상엽"}, Locale.getDefault());
System.out.println(greeting);
System.out.println(greeting1);
throw new RuntimeException();
}
}
/test1
으로 요청을 보내게 되면, 두 가지 Locale
에 설정된 국가에 맞는 메시지 소스를 읽어오게 된다. greetingKR
은 Locale.KOREA
로 설정되어 있으므로, message_ko.properties
에 설정된 내용을 읽어온다. 그리고 greetingEN
은 Locale.getDefault()
로 설정되어 있으므로, message.properties
에 설정된 내용을 읽어온다.
이를 응용하여 사용하면 사용자가 사용하는 언어 환경에 맞는 메세지를 제공하여, 손쉽게 메세지 국제화를 처리할 수 있게 된다.