case分享: 一个swagger和jackson特性引起的启动问题

44 阅读1分钟

case分享: 一个swagger和jackson特性引起的启动问题

在使用swagger生成接口文档时扫描接口参数别忘了jaskson本身的特性,除了会扫描属性参数外,所有的set/get成员方法也会被自动生成为接口参数;

这里就要注意你的get/set中如果包含特别多参数的类,那么都会被递归的层层扫描到;这里特别点名的是grpc接口生成的类型;

这里给一个案例就能很明显的看出差异

-            form.setVideoCourseInfoByArchiveInfo(archive);
+            form.buildVideoCourseInfoByArchiveInfo(archive);

分别对比前后代码的profiling火焰图

修改前: form.setVideoCourseInfoByArchiveInfo(archive)

image2024-12-31_21-5-26.png

修改后:  form.buildVideoCourseInfoByArchiveInfo(archive);

修改后在火焰图上开销太小就很难找不到了;

结论:

在使用jackson时,如果不是特地要使用序列化的特性,尽量避免命名为set/get命名方法, 这点其实在一些DDD的贫血模型中其实很少会遇到,但是如果有同学比较喜欢实用DDD的模式时要注意