application.properties
를 선언해서 MessageSource 를 관리하자.spring.messages
로 시작하는 property 를 탐색해서 MessageSource 를 생성한다.spring.messages.basename=message/messages
spring.messages.encoding=UTF-8 # default
spring.messages.fallbackToSystemLocale=false
@Configuration
public class MessageSourceConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("customMessage/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
message_언어코드_국가코드.properties(.xml)
선언하기META-INF/spring/spring-autoconfigure-metadata.properties
를 확인해보면 MessageSourceAutoConfiguration
이 존재하는 것을 확인@ConditionalOnMissingBean(name = AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME, search = SearchStrategy.CURRENT)
[1] getMatchOutcome
spring.messages.basename
속성에 대한 값을 가져온다. 없을 경우, “messages” 문자열 반환getMatchoutcomeForBasename
을 호출하고 결과 값을 outcome 에 할당한다.[2] getMatchoutcomeForBasename
match = true
인 outcome을 반환한다.[3] getResources
MessageSourceProperties
를 설정하고 MessageSource
을 빈으로 생성한다.spring.messages.basename=message/messages
spring.messages.encoding=UTF-8
spring.messages.fallbackToSystemLocale=false
true
: 환경설정 언어에 해당하는 영어용 메세지 파일을 가져온다.false
: 기본 메세지 파일에서 메세지를 가져온다.@Configuration
public class MessageSourceConfig {
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("customMessage/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
// 여기
@ConditionalOnMissingBean(name = AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME, search = SearchStrategy.CURRENT)
public class MessageSourceAutoConfiguration {