case分享: 一个swagger和jackson特性引起的启动问题
在使用swagger生成接口文档时扫描接口参数别忘了jaskson本身的特性,除了会扫描属性参数外,所有的set/get成员方法也会被自动生成为接口参数;
这里就要注意你的get/set中如果包含特别多参数的类,那么都会被递归的层层扫描到;这里特别点名的是grpc接口生成的类型;
这里给一个案例就能很明显的看出差异
- form.setVideoCourseInfoByArchiveInfo(archive);
+ form.buildVideoCourseInfoByArchiveInfo(archive);
分别对比前后代码的profiling火焰图
修改前: form.setVideoCourseInfoByArchiveInfo(archive)
修改后: form.buildVideoCourseInfoByArchiveInfo(archive);
修改后在火焰图上开销太小就很难找不到了;
结论:
在使用jackson时,如果不是特地要使用序列化的特性,尽量避免命名为set/get命名方法, 这点其实在一些DDD的贫血模型中其实很少会遇到,但是如果有同学比较喜欢实用DDD的模式时要注意