我有一個非常簡單的application.yml
文件:春天引導忽略spring.config.name/location性能
spring:
config:
name: android,ios,test,web
我希望獲得命名的配置文件像android.yml
並把能力它們變成
classpath:/,classpath:/config/,file:./,file:./config/
從ConfigFileApplicationListener
類指定DEFAULT_SEARCH_LOCATIONS
恆定。我創建在同一目錄中的文件與主配置:
android:
clientId: 0
clientSecret: clientSecret
然後我寫了一個@Configuration
類的一個方法來獲得由@ConfigurationProperties
一個的ClientDetails
實例:
@Configuration
public class TrustedClientInformationConfiguration {
@Bean(name = ANDROID)
@ConfigurationProperties(prefix = ANDROID)
public ClientDetails getAndroidClientDetails() {
return new BaseClientDetails();
}
}
不幸的是,自動裝配後,我得到了未填充字段的實例。我錯過了什麼?
EDIT1:我發現和調試在使用CONFIG_NAME_PROPERTY = "spring.config.name"
的方法(這是唯一一個使用),該containsProperty
條件總是返回false
:
private Set<String> getSearchNames() {
if (this.environment.containsProperty(CONFIG_NAME_PROPERTY)) {
return asResolvedSet(this.environment.getProperty(CONFIG_NAME_PROPERTY),
null);
}
return asResolvedSet(ConfigFileApplicationListener.this.names, DEFAULT_NAMES);
}
EDIT2:這是一個嘗試,以建立OAuth2客戶端配置將屬性移動到每個可信客戶端的單獨文件。他們應該總是實例化,儘管活動配置文件。
@AndrewTobilko以及再看看答案的第一段,或使用'@ PropertySource',或'PropertiesConfigurationFactory'做手工。 – OrangeDog