SpringBoot接口流程优化
SpringBoot接口流程优化
前言: 最近才发现之前很多以为理所当然的事情其实背后都是专门做了特殊的处理。比如我之前以为在接口流程里抛了异常,理所应当接口返回能透露出异常的信息,尤其是接口字段校验不通过时应该返回具体信息;再或者正常调了一个接口,至少日志上应该能看出有接口调用过的痕迹(暂不讨论日志应不应该打印相关信息)。
前言: 最近才发现之前很多以为理所当然的事情其实背后都是专门做了特殊的处理。比如我之前以为在接口流程里抛了异常,理所应当接口返回能透露出异常的信息,尤其是接口字段校验不通过时应该返回具体信息;再或者正常调了一个接口,至少日志上应该能看出有接口调用过的痕迹(暂不讨论日志应不应该打印相关信息)。
部门的微服务会部署在三个独立环境中,这三个环境是完全隔离的,但是某个微服务有需求需要从环境A同步数据到B和C,之前经过调研最后选择了canal来实现功能。
这里我是测试的用户自定义变量,当在application.properties里没有配置时,取的代码里的默认值,如果在同一个application.properties文件里有多个配置,取最后一个,如果是Apollo上有,则是以Apollo的为准。
如果是某个包里的配置可能不适用,具体是配置文件里的配置优先级高还是Apollo里的配置优先级高有也同样不确定(大体上还是上面那样的规律,但是有例外)。
一般数据表都会有个创建时间和最后更新时间,如果是相对简单的配置表的话,可以把最后更新时间设置为DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,这样在实体类中不用操作这个字段,会在有实际更改时自动更新值,适用于mybatis和jpa,如果是修改了表格的数据库,并且每个涉及字段的值没有实际发生变更,最后更新时间就不会变,不然就会更新成修改的时间。另一种方法则是把查出来的数据和新数据对比,如果不同就更新,这种方式会麻烦一些。
企业Id如果是用逗号分隔的形式存储,再前后再加一对逗号比较好,这样用like匹配时可以用%,企业Id,%,避免企业id为1匹配到了11这种