前後端分離的項目中,類似行政區選擇,前端控件一般擷取全部資料進行渲染,如果這些資料每次都查詢資料庫開銷會很大。
其實方法有很多種,1直接放前端項目中 2使用nginx代理 3Java渲染JSON檔案
相對來說第三種方法對我們後端來說容易維護,主要方法如下:
/**
* 讀取json格式檔案
* @param jsonSrc
* @return
*/
private String readJson(String jsonSrc) {
String json = "";
try {
//File jsonFile = ResourceUtils.getFile(jsonSrc);
//json = FileUtils.re.readFileToString(jsonFile);
//換個寫法,解決springboot讀取jar包中檔案的問題
InputStream stream = getClass().getClassLoader().getResourceAsStream(jsonSrc.replace("classpath:", ""));
json = IOUtils.toString(stream);
} catch (IOException e) {
log.error(e.getMessage(),e);
}
return json;
}
然後Controller直接調用readJson方法得到JSON檔案的内容渲染出去
/**
* 省市縣
*/
@GetMapping(value = "/getArea")
public String area() {
return readJson("classpath:com/mxthd/demo/mock/json/area.json");
}