JSON 字符串反序列化 动态泛型
需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。
方案一:将方法参数存成 JSON 字符串,然后 JSON 反序列化成对象,然后反射调用
目标方法时这样的:
复制代码
方式一:FastJson
复制代码
方式二:Jackson
复制代码
实践中发现,这两种方式容易导致 OOM
方案二:直接将参数对象存到数据库中
数据库对应字段设置 BLOB 类型(这里设置的是 MEDIUMBLOB) ,对应的 java 字段类型是 byte[]
复制代码
最后的最后,优化建议:
1、尽量不要在数据库中存 json 字符串,如果非要存,建议字段类型设置为 json,这样可以节省空间。因为你无法控制 json 字符串的长度,所以长度设置是个问题,另外 json 反序列化比较占内存。
2、长度很大的字段(比如 blob 类型的)建议单独存一张关联表
文章转载自:废物大师兄
评论