[스프링 프레임워크 핵심기술] MessageSource

Dayeon myeong·2021년 3월 17일
0

ApplicationContext에는 MessageSource 기능도 있다.

  • ApplicationContext extends MessageSource

MessageSource

국제화(i18n) 기능을 제공하는 인터페이스로, 메세지를 다국화 할 수 있다.

아래와 같이 resources 밑에 원하는 원어의 messages.propertis 파일을 만들어준다.

  • 한글 파일 : messages_ko_KR.properties,
  • 영어 파일 : messages_en.properties

messages.properties는 key, value로 이루어져있으며 {0},{1}과 같이 원하는 문자열을 덧붙일 수 있다.

또한, 스프링 부트를 사용한다면 별다른 설정이 필요없이 바로 messages.properties를 바로 사용할 수 있다.(원래는 빈으로 등록을 해야하지만 스프링부트에는 ResourceBundleMessageSource빈이 이미 등록되어있어 사용가능하다.)

스크린샷 2021-03-17 오후 5 36 20 스크린샷 2021-03-17 오후 5 37 16

위와같이 프로퍼티 설정 후 출력을 보면 각 프로퍼티 파일을 읽는 것을 알수있다.

스크린샷 2021-03-17 오후 5 37 53

이 외에도 리로딩기능이 있는 메시지 소스를 사용가능하다.

우선 messagesource를 직접 설정해야한다.
스크린샷 2021-03-17 오후 5 46 40

ReloadableResourceBundleMessageSource 인스턴스를 만들고,setBasename으로 만들어둔 메세지 프로파티가 존재하는 bundle을 classpath기준으로 가리키게 한다.
그리고 한글이 깨지지 않게 하기 위해 UTF-8로 인코딩해준다. 그러면 위에 했던 것처럼 메시지소스가 읽힌 것을 알 수 있다.

그다음 리로딩 기능으로 앱이 운영 중에 메시지 소스를 변경할 수 있는데 아래 같이 할 수 있다.

  • 1초마다 메세지를 찍고, 리소스를 캐시하는 시간을 최대 3초까지 설정
    스크린샷 2021-03-17 오후 5 53 27
스크린샷 2021-03-17 오후 5 53 08
  • 운영 중에 message 프로퍼티를 수정하고 재빌드하면 리로딩 기능이 된다.
    스크린샷 2021-03-17 오후 5 52 38
profile
부족함을 당당히 마주하는 용기

0개의 댓글