Mybatis默认情况下,只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。
如果想要开启二级缓存,则需要在xml配置文件中添加
1 | <cache/> |
此外,还要求返回的POJO对象要实现Serializable接口
Mybatis默认情况下,只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。
如果想要开启二级缓存,则需要在xml配置文件中添加
1 | <cache/> |
此外,还要求返回的POJO对象要实现Serializable接口
可以使用 @RestControllerAdvice 拦截异常并进行统一处理
1.首先定义统一的异常码 ResultCode,
其中code以HTTP code status为前缀,后缀为具体异常编号
message为异常消息,前端可以直接拿来显示给用户
1 | import lombok.AllArgsConstructor; |
比如在其中对API接口不存在抛出的异常 NoHandlerFoundException 进行了拦截,并返回统一的异常码
1 | import com.example.demo.common.ControllerResponseT; |
其中对于404的异常捕获不到的话,需要在application.properties中添加配置来解决
1 | # mvc |
Springboot可以使用Ehcache或者redis作为缓存
1.Ehcache缓存
参考:SpringBoot学习-(十八)SpringBoot整合EhCache
添加依赖,starter+ehcache
1 | <dependency> |
添加配置文件 ecache.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
添加 @EnableCaching注解 开启缓存
2.Redis缓存
SpringBoot学习笔记——连接池
Flink CDC提供了一系列connector,用于从其他数据源获取变更数据(change data capture),其中的Flink MySQL CDC基于Debezium
官方文档
1 | https://ververica.github.io/flink-cdc-connectors/release-2.3/content/about.html |
官方github
1 | https://github.com/ververica/flink-cdc-connectors |
Flink和Flink CDC的版本对应关系参考:
1 | https://nightlies.apache.org/flink/flink-cdc-docs-release-3.1/docs/connectors/flink-sources/overview/ |
各种数据源使用案例,参考:
可以使用mock对springboot web接口进行测试
1.依赖
1 | <dependency> |
2.编写测试用例
1 | import org.apache.tomcat.util.codec.binary.Base64; |
测试GET请求
1 | MockHttpServletRequest: |
测试POST请求
1 | @Test |
在对POST请求的测试中,添加了 @Transactional 注解,用于在对测试中插入的数据进行回滚,避免插入脏数据
对于接口的返回结果,需要有统一的结构,因为对于不用考虑流量费用的内部系统,对接口数据长度往往不太介意
阿里云健康码引擎的response结构 ResponseResult
ResponseResult代码 参考:
1 | https://github.com/aliyun/alibabacloud-whiteboard-callbackservice-demo/blob/master/src/main/java/com/aliyun/rtc/whiteboard/models/ResponseResult.java |
返回体结构
1 | /** |
线上阿里云的dataworks的某接口API的response字段:
data是返回的数据,errCode是错误码,errMsg是错误信息,requestId是请求的uuid
1 | import java.awt.Container; |
1 | import java.awt.Container; |
1 | import java.awt.Container; |
1 | import java.awt.event.WindowEvent; |
1 | import java.awt.event.WindowEvent; |
1 | import java.awt.Font; |
它是一种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。用于切入到指定类指定方法的代码片段叫做切面,而切入到哪些类中的哪些方法叫做切入点
AOP编程允许把遍布应用各处的功能分离出来形成可重用的组件
实现一个AOP可以分成下面几个步骤:
1.引入依赖
1 | <dependency> |
2.自定义注解 @Permission,其中的 @Target 和 @Retention 元注解参考:元注解(Annotation)
1 | import java.lang.annotation.ElementType; |
参考