본문 바로가기

스프링/스프링 핵심 기술

6. IoC 컨테이너: MessageSource

MessageSource

Message를 다국화할 수 있는 기능을 제공하는 Interface이다.

  • ApplicationContext는 MessageSource 인터페이스를 상속받고 있기 때문에 ApplicationContext으로 사용할 수 있다.

예제

  • resources폴더 안에 위와 같이 messages.properties를 만든다. ko_KR에는 한국어, en에는 영어로 hello의 값을 입력한다.
  • properties를 만들면 따로 폴더로 묶을 필요 없이 위와 같이 알아서 번들링이 된다.

 

  • Locale 정보를 통해 hello의 message를 받아오면 Locale에 맞는 값이 출력되는 것을 알 수 있다.

  • 한글이 깨지는 경우 setting의 File Encodings에 들어가 위와 같이 UTF-8로 설정해주면 정상적으로 동작된다.

MessageSource를 직접 설정하기

  • 위의 예제에서는 스프링 부트가 자동으로 설정해준 MessageSource를 사용하였지만 이렇게 직접 빈으로 등록할 수 있다.
  • 기본적인 경로와 엔코딩을 설정하고 캐시 시간도 설정이 가능하다.

 

  • Thread.sleep()을 통해 1초마다 meesage를 출력하게 한다.

 

  • 앱을 구동시켜보면 1초마다 메시지가 출력된다.
  • 앱이 구동 중인 도중에 message의 값을 변경하였다.
  • 그리고 프로젝트를 빌드하면 앱이 구동 중에도 변경내용이 적용되는 것을 알 수 있다.

참고 자료