簡體   English   中英

Spring Boot忽略spring.config.name/location屬性

[英]Spring Boot ignores spring.config.name/location properties

我有一個非常簡單的application.yml文件:

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客戶端配置。 盡管配置文件處於活動狀態,但應始終實例化它們。

應該在加載任何配置文件之前根據需要在命令行上設置spring.config屬性。

但是,看起來您實際上想要的功能是配置文件 它們是為不同環境組織不同配置的簡便方法。 文件可以命名為application-androidapplication-test等。

文獻資料

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM