복붙노트

[SPRING] 스프링 부트 yml ResourceBundle 파일

SPRING

스프링 부트 yml ResourceBundle 파일

Spring의 MessageSource를 사용하여 classpath의 .properties 파일에서 오류 메시지를로드합니다. 내 속성은 {Object}. {field}와 같은 특정 "템플릿"을 존중합니다. {unrespectedConstraint} 예 :

userRegistrationDto.password.Size= Le mot de passe doit avoir au minimum 6 caractères.
userRegistrationDto.email.ValidEmail= Merci de saisir une addresse mail valide.

리팩토링 (예 : 클래스 이름 변경)의 경우 여러 위치에서 속성 파일을 변경해야합니다.

yaml 파일 (messages.yml)을 ResourceBundle로 사용하여 다음과 같은 것을 얻을 수있는 방법이 있습니까 :

userRegistrationDto:
  password:
    Size: Le mot de passe doit avoir au minimum 6 caractères.
  email:
    ValidEmail: Merci de saisir une addresse mail valide.

해결법

  1. ==============================

    1.가장 좋은 해결책은 @vtosh가 발견하기 전에 발견했습니다.이 라이브러리를 사용하는 것입니다. 유일한 문제 (그러나 여전히)는 충분히 인기가 없다는 것입니다.

    가장 좋은 해결책은 @vtosh가 발견하기 전에 발견했습니다.이 라이브러리를 사용하는 것입니다. 유일한 문제 (그러나 여전히)는 충분히 인기가 없다는 것입니다.

    다른 옵션은 수동으로 ResourceBundle.Control 클래스를 확장하여 Java 지역화 지원을 확장하는 것입니다 (공식 예제는 여기에서 찾을 수 있습니다). 발견 된 라이브러리가이 방법을 사용하기 때문에 나는 그다지 이해할 수 없다.

    스프링을위한 해결책이없는 이유는 무엇입니까? 자,이 jira에서 찾을 수있는 대답입니다. 아직 Open 상태이므로 적어도 현재는 그들의 측면에서 어떤 해결책도 될 것으로 기대하지 않습니다.

  2. ==============================

    2.난 당신이 VM을 작업하는 동안 다시로드 할 수있는 메시지 소스가 필요하면 이것이 당신의 요구 사항에 충분해야한다고 생각, 좀 더 파고해야 할 수도 있습니다.

    난 당신이 VM을 작업하는 동안 다시로드 할 수있는 메시지 소스가 필요하면 이것이 당신의 요구 사항에 충분해야한다고 생각, 좀 더 파고해야 할 수도 있습니다.

    @Configuration
    public class TestConfig {
    
        @Bean(name = "testProperties")
        public Properties yamlProperties() throws IOException {
            YamlPropertiesFactoryBean bean = new YamlPropertiesFactoryBean();
            bean.setResources(new ClassPathResource("test.yml"));
            return bean.getObject();
        }
    
        @Bean
        public MessageSource messageSource() throws IOException {
            ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
            messageSource.setCommonMessages(yamlProperties());
            return messageSource;
        }
    }
    
  3. from https://stackoverflow.com/questions/43655895/spring-boot-yml-resourcebundle-file by cc-by-sa and MIT license