JUMP개발자 2021. 5. 16. 00:07

MessageSource는 다국어를 제공하는 기능이다.

또한 ApplicationContext는 MessageSource를 상속 받고 있기 때문에 ApplicationContext를 사용할 수도 있다.

아래와 같이 messages.properties를 생성하여 사용한다.

 

/resources/messages.properties

greeting= Hello!! {0}

/resources/messages_ko_KR.properties

greeting= 안녕!!, {0}

 

 

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    MessageSource messageSource;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Locale.setDefault(Locale.ROOT);
        while(true) {
            System.out.println(messageSource.getMessage("greeting", new String[]{"jump"}, Locale.getDefault()));
            System.out.println(messageSource.getMessage("greeting", new String[]{"jump"}, Locale.KOREA));
        }
    }
}
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public MessageSource messageSource() {
        var messageSource = new ReloadableResourceBundleMessageSource();
        // Reloadable : 운영 중에 프로젝트 빌드를 통해 메시지 변경이 가능하다.
        messageSource.setBasename("classpath:/messages");
        messageSource.setDefaultEncoding("UTF-8");
        // UTF-8 설정
        messageSource.setCacheSeconds(3);
        // Resource Caching 하는 시간을 3초로 설정하여 3초마다 프로퍼티를 다시 읽도록 함
        return  messageSource;
    }
}