1.背景
- 公司中有一个业务,返回的 vo 中的一个值可能为 0 属性,如果为 0 给用户显示成 1;
- 听起来很简单,直接改代码 service 层的代码就行了,但是如果 service 层的逻辑复杂到一定程度,想要改动就不是那么容易了,如图:
考虑对 rpc 接口返回的影响、 es 数据库(我们 es 要求存的数据尽量好数据库一样)的影响,是典型牵一发而动全身;
2.过程
- 我写了一版上面图上的改动,反复校验确定影响,做好回归测试准备之后,提交上了代码,并跟领导阐述了影响范围;
- 领导眉头一皱,你还是改 vo 吧;我问怎么改,领导说你尝试改构造方法什么的,然后我尝试改构造方法,但是代码写的还是太恶心了,又提交了上去;
- 然后领导给我发了篇博客,关于直接改 get 方法的。这时我恍然大悟
- springboot 返回 json 用的 jsonConverter 返回对象属性的时候直接调的 get 方法,直接把 get 方法改了就行了
3.最终
4.感想
- 这种需求,可以改数据库,外一层可以改 service ,外一层可以改 vo 的构造方法,但是这是业务层面的视角,并没有引入框架的视角,springboot 框架 json 解析相当于是再外一层的视角;
- 以后要多了解框架知识,也要有更发散的思维,比如再再外一层可以改 nginx (虽然不太可能,但是要发散思想),知识储备也很重要;要学的东西还是很多,学到的东西也很多;