Configure Custom Validation MessageSource in Spring Boot - KwangtaekJung/inflearn-spring-framework-essential GitHub Wiki

Configure Custom Validation MessageSource in Spring Boot

  • 참고
  • 요약
    • message.properties 파일에 넣어도 되지만 validation 관련된 내용은 validation.properties에 별도로 관리를 하자.
    • MessageSource를 정의하는 곳에 추가적으로 validationMessageSource와 getValidator bean을 추가하였다.
      getValidator라는 녀석은 DTO에서 messageSource를 가지고 올 수 있게 해주는 역할을 해준다.
      @Configuration
      public class WebConfig implements WebMvcConfigurer {
      
          @Bean
          public MessageSource messageSource() {
              ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
              messageSource.setBasename("classpath:/messages/message");
              messageSource.setDefaultEncoding("UTF-8");
              return messageSource;
          }
      
          @Bean
          public MessageSource validationMessageSource() {
              ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
              messageSource.setBasename("classpath:/messages/validation");
              messageSource.setDefaultEncoding("UTF-8");
              return messageSource;
          }
      
          @Override
          public Validator getValidator() {
             LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
             bean.setValidationMessageSource(validationMessageSource());
             return bean;
          } 
      }
      
    • 마지막으로 DTO에서는 message="{validation.properties에서 정의한 key값}" 을 넣어주면 된다
      @Data public class MemberDto { 
      
        @NotNull(message="{name.notnull}") 
        private String name;  
        ... 후략 ... 
      }