簡體   English   中英

Spring 啟動 YAML 對象映射

[英]Spring boot YAML object mapping

我正在嘗試將 Spring Boot 中的 YAML 映射到 Java 類,這是我的 YAML 和 Java 類

--- 
tables: 

  trs_fact_txn_detail: 
    tablespecificparams: 
        expiredinterval: "90d"
        fields: "abc"

  trs_fact_txn_detail_et: 
    tablespecificparams: 
        expiredinterval: "56d"
        fields: "abcdef"



@Configuration
@ConfigurationProperties(locations = {"${table.config.location}"})
public class RedshiftTableConfig {

    private Map<String, tablespecificparams> tables;

    public Map<String, tablespecificparams> getTables() {
        return tables;
    }

    public void setTables(Map<String, tablespecificparams> tables) {
        this.tables = tables;
    }

    public static final class tablespecificparams {

        String expiredinterval;
        String fields;

        public String getExpiredinterval() {
            return expiredinterval;
        }
        public void setExpiredinterval(String expiredinterval) {
            this.expiredinterval = expiredinterval;
        }
        public String getFields() {
            return fields;
        }
        public void setFields(String fields) {
            this.fields = fields;
        }

    }
}

我正在映射兩個表。 無論如何 tablespecificparameters 的值似乎為空。 我已經調試了一段時間。 我如何在這里映射 tablespecificparams ?

您的配置文件應如下所示。

@Configuration
@ConfigurationProperties(locations = {"${table.config.location}",prefix = "tables"})
public class RedshiftTableConfig {

private Map<String, tablespecificparams> trs_fact_txn_detail;

public Map<String, tablespecificparams> getTrs_fact_txn_detail() {
    return trs_fact_txn_detail;
}

public void setTrs_fact_txn_detail(Map<String, tablespecificparams> trs_fact_txn_detail) {
    this.trs_fact_txn_detail = trs_fact_txn_detail;
}

public static final class tablespecificparams {

    String expiredinterval;
    String fields;

    public String getExpiredinterval() {
        return expiredinterval;
    }
    public void setExpiredinterval(String expiredinterval) {
        this.expiredinterval = expiredinterval;
    }
    public String getFields() {
        return fields;
    }
    public void setFields(String fields) {
        this.fields = fields;
     }
   }
}

並且 yaml 文件應該有適當間隔的條目。

tables: 

 trs_fact_txn_detail: 
    tablespecificparams: 
         expiredinterval: "90d"
         fields: "abc"

 trs_fact_txn_detail_et: 
        tablespecificparams: 
        expiredinterval: "56d"
        fields: "abcdef"

我通過從 yaml 中刪除字符串“bankspecificparams”來修復它。

--- 
tables: 

  trs_fact_txn_detail: 
        expiredinterval: "90d"
        fields: "abc"

  trs_fact_txn_detail_et:  
        expiredinterval: "56d"
        fields: "abcdef"

暫無
暫無

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

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