问题描述
我有一个旧版springMvc项目,我想重构所有控制器以返回ResponseEntity对象,而不是返回默认情况下返回的Model对象。
我正在寻找一种将Map类中的函数映射到ResponseEntity类的方法。
我已经看到人们建议使用正则表达式作为重构所有方法的解决方案。
就这种情况下使用正则表达式的优点/缺点,我需要了解您对将正则表达式作为解决方案实施的看法。
此外,如果您可以提出其他解决方案,也会有所帮助。
请查看附件代码以了解更多详细信息。
将模型对象返回到视图
@GetMapping("/getData")
public String getData(Model model) {
model.addAttribute("message","springMvc");
return "viewPage";
}
以json格式返回ResponseEntity对象
@GetMapping("/getData")
public ResponseEntity<Map<String,String>> getData() {
Map<String,String> map = new HashMap<>();
map.put("message","springMvc");
return new ResponseEntity.Ok().body(map);
}
解决方法
如果将来有人遇到此问题,我想分享一下,我已经找到了一种方便的方法,可以使用AST(抽象语法树)对代码进行重构,从而使您可以更好地控制代码与使用正则表达式进行比较。
您可以检查库存储库:
请注意,IDE和诸如SonarQube之类的静态分析工具都使用AST
,正则表达式不能在您的上下文中使用。当然,有太多特殊情况需要更改,这不仅仅是更改字符串的问题。 JavaParser是一个很好的候选人。