問題原因
FastJson爲了快速解析對象,會將已經解析過的對象的元信息緩存起來,所以關鍵就是清除其緩存,在沒有緩存的情況下其會再次生成。
相關Issue:
解決方案
@RestController
@RequestMapping("/api")
public class SystemController {
@ApiOperation(value = "開發時清除緩存", notes = "用於開發使用JRebel時清除FastJson的對象解析Cache")
@RequestMapping(value = "/clearCache", method = RequestMethod.GET)
public String clearCache() {
SerializeConfig.getGlobalInstance().clearSerializers();
ParserConfig.getGlobalInstance().clearDeserializers();
return "";
}
}
其中最關鍵的是將SerializeConfig和ParserConfig對象裏的緩存清理乾淨即可。採用這種方案每次只需要調用下這個方法即可。