spring.config.location
은 외부 응용 프로그램 구성 (externalized configuration)의 위치를 제공하는 데 사용됩니다. 당신은 예를 들어, 당신은 file:
과 경로를 앞에해야 외부 위치를 참조하려면
: 당신이 파일이 messages_en.properties라고 사용할 때
spring.config.location=file:config/application.properties
그러나
, 그것은 더 가능성이 높습니다 이 파일은 application.properties 파일 대신에 MessageSource
(국제화/현지화 용)이 사용하는 특성 파일입니다.
당신은 예를 들어,
spring.messages.*
속성을 구성하여,뿐만 아니라 이러한 메시지에 대한 외부의 위치를 구성 할 수 있습니다
:
spring.messages.basename=file:config/messages
이 국제 대회이기 때문에 당신은 언어 코드 (en
)를 추가 할 필요가 없습니다 Spring이 적절한 메시지 파일을 탐지하기 위해 이미 사용하고있다.
MessageSource
을 호출 할 때 주어진 언어에 따라 messages_en.properties 또는 messages_fr.properties를 열거 나 ... 제공된 언어에 대한 속성이없는 경우 폴백으로 messages.properties를 사용합니다.
편집 : MessageSourceAutoConfiguration
는 당신이 기본 대체에게 messages.properties이 필요 클래스 패스 자원 에 대한의 개막과 것으로 보인다. 당신이 그것들을 가지고 있지 않으면, 그것은 효과가 없을 것입니다.
그러나 여전히 이러한 속성을 사용할 수 있으며, MessageSource
수동 @ConfigurationProperties
를 사용하여 생성 : 그것은 몇 번 (응용 프로그램이 다시 시작) 일
@Bean
@ConfigurationProperties("spring.messages")
public MessageSource messageSource() {
return new ReloadableResourceBundleMessageSource();
}
, 그러나 그 후에는 지금 messages_en을 따기. classpath와 external (즉, config/messages_en.properties) 내부에서 정의 된 속성은 내부의 속성을 덮어 쓰지 않습니다. 이제 클래스 패스 내부의 속성을 제거하면 더 이상 속성을 찾을 수 없다는 메시지가 나타납니다. 어디에서 잘못 될 수 있는지 알려 주실 수 있습니까? – Pavanraotk
외부 설정과 함께'MessageSource' 빈을 명시 적으로 ('@ Bean') 만들고 기본 ('@ Primary')으로 만들 수 있습니까? 어떻게 든 Spring은 classpath 메시지를 사용하는 또 다른'MessageSource' 빈을 만들고 있다고 생각합니다. – g00glen00b
빈을 작성했습니다. @Bean 공개 ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); //messageSource.setBasenames("file:C:\\Users\\pavan.rao\\Documents\\mobiquity\\txn\\target\\config\\messages ","classpath : messages "); messageSource.setBasenames ("file : config/messages", "classpath : messages"); return messageSource; } 이제 절대 경로를 사용하면 절대 경로없이 작동하지 않습니다. 어떤 생각? – Pavanraotk