2016-10-08 63 views
-1

我試圖在YAML映射在我的春天啓動的Java類,這是我的YAML和Java類春天開機YAML對象映射

--- 
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; 
     } 

    } 
} 

我得到映射的兩個表。無論如何,tablepecificparameters的值似乎爲空。我一直在調試一段時間。我如何在這裏映射這些表的特定對象 ?

+0

@Anthon。我認爲這個問題很明確。不知道爲什麼它被投票-1。無論如何,我已經明確地添加了這個問題,以更清晰地 –

+0

感謝您的更新。爲什麼一個職位投了票(而不是投票)而其他投票人卻沒有這樣做的真正原因通常是不清楚的。特別是投票「無用」是一個非常主觀的國際海事組織。當投票一方面好時,人們不必評論(防止大多數復仇投票等),但另一方面可能令人沮喪。我希望你的問題得到一個可接受的答案。我知道YAML,但是自從這個千年開始以來我沒有用過Java,所以不能幫助你。 – Anthon

回答

0

你的配置文件應該如下所示。

@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" 
+0

這不適合我的yaml。我有多個表聲明trs_fact_txn_detail,trs_fact_txn_detail_et,這裏的代碼只映射到一個表。 –

0

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

--- 
tables: 

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

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