ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.