더북(TheBook)

4.8.1.1 MessageSource를 사용한 국제화

스프링은 ApplicationContext 이외에도 세 가지 MessageSource 구현체를 제공합니다.

ResourceBundleMessageSource

ReloadableResourceBundleMessageSource

StaticMessageSource

StaticMessageSource 구현체는 상용 애플리케이션에서는 사용하지 말아야 합니다. 일반적으로 애플리케이션에 i18n을 기능을 추가할 때 필요한 외부 구성을 할 수 없기 때문입니다.

ResourceBundleMessageSource는 자바의 ResourceBundle을 사용해 메시지를 읽어 들입니다. ReloadableResourceBundleMessageSourceResourceBundleMessageSource와 기본적으로 동일하지만 메시지 소스 파일에서 주기적으로 메시지를 다시 읽어 들일 수 있는 차이가 있습니다.

세 가지 MessageSource 구현체 모두 HierarchicalMessageSource라는 또 다른 인터페이스도 구현하는데, 이 인터페이스로 여러 MessageSource 인스턴스를 내장할 수 있습니다. 이와 같은 메커니즘으로 ApplicationContext는 여러 MessageSource 인스턴스와 함께 동작합니다.

ApplicationContext가 제공하는 MessageSource 기능을 활용하려면 이름이 messageSourceMessageSource 타입 빈을 구성에 정의해야 합니다. ApplicationContext이 해당 MessageSource 빈을 가져와 내장하면 애플리케이션은 ApplicationContext를 사용해 메시지에 접근할 수 있습니다. 말로는 설명하기 어려우므로 다음 예제를 보겠습니다. 다음은 영어와 한국어 로케일 메시지에 접근하는 간단한 예제 애플리케이션입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.