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