다국화를 지원하여 메세지를 해석하는 기능이라고 설명되어 있다.
이것은 말 그대로 사용자의 국제 환경에 맞게, 여러 언어로 번역해 준다는 것이다.
그러나 중요한 점은 다국화가 아니라 MessageSource이다. MessageSource가 지원하는 기능이 다국화일 뿐이다.
그럼 대체 MessageSource가 뭔지 알아보자.
MessageSource란 말 그대로 모든 메세지를 의미한다.
그게 로그여도 좋고, 클라이언트에 보낼 오류 메세지여도 좋다.
단순히 다뤄질 수 있는 모든 메세지를 의미한다.
그럼 그냥 출력하면 되지 왜 MessageSource를 쓸까?
바로 위에서 말한 다국화 때문이다.
한국어로 짜여진 프로그램을 어느날 갑자기 영어로 바꿔야 한다고 생각해보자.
컴퓨터는 번역기를 돌릴 수 없으므로, 일일히 번역된 결과물을 대체하여 넣어줘야 한다.
하지만 이렇게 되면 프로그램은 하나의 언어로만 표현되게 된다.
한국어 버튼을 누르면 한국어로, English 버튼을 누르면 영어로 번역되게 하고 싶다.
그럼 어떻게 할까? 프로그램을 2개 만들어야 하나?
이럴때 필요한 것이 바로 Locale에 의한 다국화 기능이다.
이런 경우, Spring의 MessageSource는 getMessage()에서 단순히 Locale을 바꾸는 것으로 번역이 가능하다.
즉, 버튼에 따라 Locale만 변경하면 된다는 뜻이다.
다국화를 지원하는 MessageSource 기능을 가진다는 것은 그런 의미이다.
이것은 자바의 상속의 개념과 동일하다.
상위 Context에 설정된 것이라도, 하위 Context에서 재설정되면 그것이 적용된다는 것이다.
즉 하위 Context의 설정 내용이 우선시 된다는 것을 의미한다.
이상으로 ApplicationContext의 기능에 대해 간략히 알아보았다.
사실 ApplicationContext에 대해서는 단순히 "최상위 Context로써, 기능의 중심"이라고만 알고 있었는데,
알고보니 중요한 기능을 하고 있었고, Spring의 추상화가 얼마나 잘 되어있는지를 확인해 볼 수 있었다.
다음 편에서는 EventListner와 MessageSource의 사용법에 대해 살펴보도록 하자.