본문 바로가기
IT/spring

스프링 MessageSource

by 뉴코딩맨 2023. 6. 30.
스프링 프레임워크(Spring Framework)에서는 다국어 지원을 위해 MessageSource 인터페이스를 제공합니다. MessageSource를 사용하면 애플리케이션에서 사용되는 텍스트 메시지를 외부 리소스로 분리하고, 다국어 지원 및 메시지의 동적 로딩을 수행할 수 있습니다. MessageSource의 개념과 사용법, 그리고 예제를 통해 자세히 알아보겠습니다.
 
 

MessageSource란?

MessageSource는 스프링의 다국어 지원을 위해 사용되는 인터페이스입니다. 이를 통해 애플리케이션에서 사용되는 메시지를 외부 리소스 파일에 저장하고, 해당 메시지를 로드하여 애플리케이션에서 사용할 수 있습니다. MessageSource는 다양한 메시지 리소스 타입을 지원하며, 다국어 처리를 위해 메시지의 로캘(Locale)에 따라 적절한 메시지를 반환할 수 있습니다.

 

 

MessageSource 사용법

MessageSource를 사용하려면 스프링 컨텍스트에서 해당 인터페이스를 빈으로 등록해야 합니다. 이후에는 MessageSource의 구현체를 사용하여 메시지를 로드하고, 애플리케이션에서 필요한 곳에서 메시지를 사용할 수 있습니다.
 

메시지 리소스 파일 작성

먼저, 메시지 리소스 파일을 작성해야 합니다. 일반적으로 .properties 파일 형식으로 작성하며, 다국어별로 파일을 작성하는 것이 일반적입니다. 예를 들어, messages_en.properties는 영어 메시지, messages_fr.properties는 프랑스어 메시지를 포함합니다. 각 파일에는 메시지 키(key)와 해당 메시지(value)가 포함되어 있습니다.

 

 

MessageSource 빈 등록

스프링 컨텍스트에서 MessageSource 빈을 등록해야 합니다. 이를 위해 XML 설정 파일이나 Java 구성 클래스에서 다음과 같이 MessageSource 빈을 등록할 수 있습니다.
 
@Configuration
public class AppConfig {
    
    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
    
    // ...
}
 
위의 예제에서는 ResourceBundleMessageSource를 사용하여 MessageSource 빈을 등록하고 있습니다. setBasename() 메서드를 사용하여 메시지 리소스 파일의 경로를 설정하고, setDefaultEncoding() 메서드를 사용하여 인코딩 방식을 설정합니다.
 

메시지 사용

MessageSource 빈을 등록한 후에는 애플리케이션에서 해당 메시지를 사용할 수 있습니다. MessageSource 인터페이스는 getMessage() 메서드를 제공하며, 이를 사용하여 메시지를 로드할 수 있습니다.
 
@Controller
public class MyController {
    
    @Autowired
    private MessageSource messageSource;
    
    @RequestMapping("/welcome")
    public String welcome(Model model, Locale locale) {
        String message = messageSource.getMessage("welcome.message", null, locale);
        model.addAttribute("message", message);
        return "welcome";
    }
    
    // ...
}
 
 
위의 예제에서는 getMessage() 메서드를 사용하여 welcome.message라는 키에 해당하는 메시지를 로드하고 있습니다. 로캘(locale)을 통해 메시지를 로드하므로, 클라이언트의 언어 설정에 따라 적절한 메시지가 반환됩니다.

 

 

결론

MessageSource를 사용하면 스프링 애플리케이션에서 다국어 지원을 쉽게 구현할 수 있습니다. 외부 리소스에 메시지를 저장하고, MessageSource를 통해 메시지를 로드하여 사용할 수 있습니다. 이를 통해 다국어 애플리케이션을 개발할 때 유연성과 확장성을 확보할 수 있습니다.

 

 

스프링 MultipartResolver

스프링 프레임워크(Spring Framework)는 웹 애플리케이션 개발을 위한 다양한 기능과 라이브러리를 제공합니다. 그 중에서도 파일 업로드와 같은 멀티파트 요청 처리는 많은 웹 애플리케이션에서 필

newcodingman.tistory.com

 

'IT > spring' 카테고리의 다른 글

스프링 Jackson 라이브러리  (0) 2023.06.30
스프링 LocaleResolver  (0) 2023.06.30
스프링 @ExceptionHandler 어노테이션  (0) 2023.06.30
스프링 @ControllerAdvice 어노테이션  (0) 2023.06.30
스프링 MultipartResolver  (0) 2023.06.29

댓글