스프링 MVC 2 - 스프링 메시지 소스 사용
스프링 메시지 소스 사용
MessageSource 인터페이스
MessageSource 인터페이스를 보면 코드를 포함한 일부 파라미터로 메시지를 읽어오는 기능을 제공한다.
스프링이 제공하는 메시지 소스를 어떻게 사용하는지 테스트 코드를 통해서 학습해보자.
test/java/hello/itemservice/message.MessageSourceTest.java
- ms.getMessage("hello", null, null)
- code: hello
- args: null
- locale: null
가장 단순한 테스트는 메시지 코드로 hello를 입력하고 나머지 값은 null을 입력했다.
locale 정보가 없으면 basename에서 설정한 기본 이름 메시지 파일을 조회한다. basename으로 messages를 지정했으므로 messages.properties 파일에서 데이터를 조회한다.
MessageSourceTest추가 - 메시지가 없는 경우, 기본 메시지
- 메시지가 없는 경우에는 NoSuchMessageException 이 발생한다.
- 메시지가 없어도 기본 메시지(defaultMessage)를 사용하면 기본 메시지가 반환된다.
MessageSourceTest추가 - 매개변수 사용
다음 메시지의 {0} 부분은 매개변수를 전달해서 치환할 수 있다.
hello.name=안녕 {0} → Spring 단어를 매개변수로 전달 → 안녕 Spring
국제화 파일 선택
locale 정보를 기반으로 국제화 파일을 선택한다.
- Locale이 en_US의 경우 messages_en_US → messages_en → messages 순서로 찾는다.
- Locale에 맞추어 구체적인 것이 있으면 구체적인 것을 찾고, 없으면 디폴트를 찾는다고 이해하면 된다.
MessageSourceTest 추가 - 국제화 파일 선택1
- ms.getMessage("hello", null, null):locale 정보가 없으므로 messages를 사용
- ms.getMessage("hello", null, Locale.KOREA): locale 정보가 있지만, message_ko가 없으므로 messages를 사용
MessageSourceTest 추가 - 국제화 파일 선택2
- ms.getMessage("hello", null, Locale.ENGLISH): locale 정보가 Locale.ENGLISH이므로 messages_en을 찾아서 사용
강의 내용 정정 - 영상과 다른 내용 보충
Locale 정보가 없는 경우 Locale.getDefault()을 호출해서 시스템의 기본 로케일을 사용한다.
예)locale = null 인 경우 → 시스템 기본 locale이 ko_KR이므로 messages_ko.properties 조회 시도
→ 조회 실패 → messages.properties 조회
참고: https://www.inflearn.com/questions/286899, https://www.inflearn.com/questions/489062
'Spring' 카테고리의 다른 글
스프링 MVC 2 - 웹 애플리케이션에 국제화 적용하기 (0) | 2022.08.22 |
---|---|
스프링 MVC 2 - 웹 애플리케이션에 메시지 적용하기 (0) | 2022.08.20 |
스프링 MVC 2 - 스프링 메시지 소스 설정 (0) | 2022.08.18 |
스프링 MVC 2 - 메시지, 국제화 소개 (0) | 2022.08.18 |
스프링 MVC 2 - 프로젝트 설정 (메시지, 국제화) (0) | 2022.08.18 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 2 - 웹 애플리케이션에 국제화 적용하기
스프링 MVC 2 - 웹 애플리케이션에 국제화 적용하기
2022.08.22 -
스프링 MVC 2 - 웹 애플리케이션에 메시지 적용하기
스프링 MVC 2 - 웹 애플리케이션에 메시지 적용하기
2022.08.20 -
스프링 MVC 2 - 스프링 메시지 소스 설정
스프링 MVC 2 - 스프링 메시지 소스 설정
2022.08.18 -
스프링 MVC 2 - 메시지, 국제화 소개
스프링 MVC 2 - 메시지, 국제화 소개
2022.08.18