簡體   English   中英

如何在SpringBoot application.properties文件中對映射進行軟編碼,而不是對硬編碼進行映射?

[英]How to softcode map in SpringBoot application.properties file instead of hardcoding?

因此,我想返回一個JSON對象,該對象應類似於:

{"Issues":[{"IssueName": "Loan"},{"IssueName": "Lease"},{"IssueName": "Other"}]}

到目前為止,我最接近這種格式的是通過以下代碼:

@RequestMapping(value="/issueTypes", produces = MediaType.APPLICATION_JSON_VALUE)
    public  Map<String, String> getIssue(){
        HashMap<String, String> issue = new HashMap<>();
        issue.put("issues", "Loan");
        issue.put("issues", "Lease");
        issue.put("issues", "Other");
        return issue;
    }

雖然map用花括號將鍵值對提供給我,但不允許我將相同的鍵設置為不同的值(出於明顯的原因)。 還有其他方法可以返回上述JSON對象嗎? 而且是有可能softcode它在application.properties以便日后如果我想添加更多的問題類型,我可以很容易地做到這一點?

一種方法是使用條目List而不是條目Map

@Value("#{'${issues}'.split(',')}")
private List<String> issues;

@RequestMapping(value = "/issueTypes", produces = MediaType.APPLICATION_JSON_VALUE)
public Map<String, List<Map.Entry<String, String>>> getIssue() {
    Map<String, List<Map.Entry<String, String>>> m = new LinkedHashMap<>();
    m.put("Issues", issues.stream()
            .map(s -> Map.entry("issueName", s))
            .collect(Collectors.toList()));
    return m;
}

並在您的application.properties中:

issues=Loan,Lease,Other

輸出:

{"Issues":[{"issueName":"Loan"},{"issueName":"Lease"},{"issueName":"Other"}]}

暫無
暫無

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

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