-
MessageSource 처리[공부] 프로그래밍/Spring・Spring Boot (JAVA) 2024. 4. 4. 14:33
MessageSource
Spring Boot에서 MessageSource는 국제화 (i18n) 및 지역화 (l10n)를 지원하기 위한 인터페이스입니다. 이 인터페이스는 다국어 지원을 위해 메시지 번들을 로드하고 특정 로케일에 해당하는 메시지를 제공하는 데 사용됩니다.
일반적으로 Spring Boot 애플리케이션에서 사용되는 메시지는 소스 코드에 하드코딩되는 것이 아니라 외부 리소스 번들에 저장됩니다. 이러한 번들은 프로퍼티 파일(.properties) 형식으로 저장될 수 있으며, 각각의 파일은 특정 로케일에 대한 메시지를 포함합니다. 예를 들어, messages_en.properties 파일은 영어(English)로 된 메시지를 포함하고, messages_ko.properties 파일은 한국어(Korean)로 된 메시지를 포함합니다.
Spring Boot 애플리케이션에서 MessageSource를 사용하면 컨트롤러나 서비스 등에서 메시지를 간편하게 가져올 수 있습니다. 이를 통해 애플리케이션을 다국어로 제공하고, 사용자에게 해당 언어로 메시지를 표시할 수 있습니다.
간단히 말해, MessageSource는 Spring Boot 애플리케이션에서 다국어 메시지를 관리하고 제공하기 위한 도구로 사용됩니다.messages.properties 작성
messages_jp.properties 이런식으로 properties 파일 만들기
- E01=ログインIDを入力してください。
- E02=パスワードを入力してください。
메시지 리소스를 읽어오는 유틸리티 클래스 작성
package test.util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.stereotype.Component; import java.util.Locale; @Component public class MessageUtils { @Autowired private MessageSource messageResource; public String get(String errorCode) { return messageResource.getMessage(errorCode, new Object[]{}, Locale.JAPAN); } public String get(String errorCode, String... args) { if (args == null) { return messageResource.getMessage(errorCode, null, Locale.JAPAN); } String[] params = new String[args.length]; for (int i = 0; i < params.length; i++) { params[i] = messageResource.getMessage(args[i], new String[]{}, Locale.JAPAN); } return messageResource.getMessage(errorCode, params, Locale.JAPAN); } }
▷ @Component 어노테이션:
스프링 컴포넌트 스캔에 의해 스프링 컨테이너에 이 클래스의 빈으로 등록됩니다.
▷ public String get(String errorCode):
주어진 오류 코드에 해당하는 메시지를 가져옵니다. 이때 인자로 오류 코드를 받으며, MessageSource를 통해 해당 메시지를 가져와서 반환합니다.
▷ public String get(String errorCode, String... args):
오류 코드와 추가적인 인자를 받아서 해당하는 메시지를 가져옵니다. 오류 코드와 함께 가변 인자를 받아 해당하는 메시지를 가져오는데, 이때 가변 인자는 메시지 내의 placeholder를 채우는 데 사용됩니다. 이 메서드는 오류 코드와 함께 메시지 내의 placeholder를 채워서 메시지를 가져와 반환합니다.
▷ Locale.JAPAN:
이 코드는 일본어로 메시지를 가져오도록 Locale을 설정합니다. 따라서 이 클래스에서 가져오는 모든 메시지는 일본어로 가져옵니다.해당 메세지 사용하기
@Controller public class TestController { @Autowired MessageUtils messageUtils; @RequestMapping(method = RequestMethod.POST, path = "/test/login") public String login(LoginInfo loginInfo) { ... return messageUtils.getMessage("E01"); }
'[공부] 프로그래밍 > Spring・Spring Boot (JAVA)' 카테고리의 다른 글
Spring Batch 구현 - 1 (0) 2024.04.16 Scheduler 구현 (0) 2024.04.09 ApplicationContext 란 (0) 2024.04.03 세션 처리 (0) 2024.04.03 FreeMarker 설정 (0) 2024.04.03