解決JRebel進行代碼熱加載時FastJson的JsonField的緩存無法刷新問題

問題原因

FastJson爲了快速解析對象,會將已經解析過的對象的元信息緩存起來,所以關鍵就是清除其緩存,在沒有緩存的情況下其會再次生成。

相關Issue:

  1. jrebel修改後調用toString方法報錯問題
  2. 問題:修改屬性的類型後無法解析

解決方案

@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對象裏的緩存清理乾淨即可。採用這種方案每次只需要調用下這個方法即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章