ApplicationContext에는 MessageSource 기능도 있다.
국제화(i18n) 기능을 제공하는 인터페이스로, 메세지를 다국화 할 수 있다.
아래와 같이 resources 밑에 원하는 원어의 messages.propertis 파일을 만들어준다.
messages.properties는 key, value로 이루어져있으며 {0},{1}과 같이 원하는 문자열을 덧붙일 수 있다.
또한, 스프링 부트를 사용한다면 별다른 설정이 필요없이 바로 messages.properties를 바로 사용할 수 있다.(원래는 빈으로 등록을 해야하지만 스프링부트에는 ResourceBundleMessageSource빈이 이미 등록되어있어 사용가능하다.)
위와같이 프로퍼티 설정 후 출력을 보면 각 프로퍼티 파일을 읽는 것을 알수있다.
이 외에도 리로딩기능이 있는 메시지 소스를 사용가능하다.
우선 messagesource를 직접 설정해야한다.
ReloadableResourceBundleMessageSource 인스턴스를 만들고,setBasename으로 만들어둔 메세지 프로파티가 존재하는 bundle을 classpath기준으로 가리키게 한다.
그리고 한글이 깨지지 않게 하기 위해 UTF-8로 인코딩해준다. 그러면 위에 했던 것처럼 메시지소스가 읽힌 것을 알 수 있다.
그다음 리로딩 기능으로 앱이 운영 중에 메시지 소스를 변경할 수 있는데 아래 같이 할 수 있다.