8
通过AOP拦截方法参数,在参数增加字段以及get,set后,增加的参数是List集合,调用JSON.toString方法会报找不到get方法。 目前有解决办法吗?
通过AOP拦截方法参数,在参数增加字段以及get,set后,增加的参数是List集合,调用JSON.toString方法会报找不到get方法。 目前有解决办法吗?
这是因为fastjson对序列化器做了缓存,你参数改变后它还是调用之前的序列化器
这是因为fastjson对序列化器做了缓存,你参数改变后它还是调用之前的序列化器,暂时找不到解决方案;你可以用jackson替代
能够禁用缓存达到刷新的效果吗?
可以的,方法如下:
@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 "";
}
}
调用该方法即可清除缓存。 可以参见我的博文:解决JRebel进行代码热加载时FastJson的JsonField的缓存无法刷新问题
有没有大神写一个拦截器,,这样每次调接口清除好麻烦呀
这是因为fastjson对序列化器做了缓存,你参数改变后它还是调用之前的序列化器,暂时找不到解决方案;你可以用jackson替代
能够禁用缓存达到刷新的效果吗? 可以在开发环境,禁用ASM SerializeConfig.getGlobalInstance().setAsmEnable(false);