2016-10-08 66 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"