目录
1.创建一个类,并在类上标注 @ControllerAdvice注解
2.统一数据返回的实现 @ControllerAdvice + ResponseBodyAdvice
前言
上一篇博客我们学习了Spring AOP的基础和使用,那么这节课的SpringBoot的统一处理功能其实就是AOP思想的运用,可以当做是AOP的实战
任务:
- 统一用户登录权限验证(拦截)
- 统一数据格式返回
- 统一异常处理
一、统一用户登录权限验证(拦截)
学习了Spring AOP之后,可以通过Spring AOP的前置通知或环绕通知来实现,但是在实现过程中我们仍然会有两个问题:
- 没办法获取到HttpSession对象
- 实际开发,拦截一部分方法,一部分不拦截,这样的切点定义规则很难
如何解决这两个问题呢?我们可以使用Spring的拦截器!
使用Spring 拦截器
1.实现一个普通拦截器
2.将拦截器添加到配置文件中,并设置拦截规则
- addPathPatterns:表示需要拦截的URL,
**
表示拦截任意方法(也就是所有方法) - excludePathPatterns:表示需要排除的URL。
其实就是相当于
二、web层添加统一请求前缀
直接重写configurePathMatch()方法
重写这个方法之后,我们就需要在controller设置的url的基础上在加上 /liming 才能访问
直接在配置文件中进行配置
三、统一异常处理
1.创建一个类,并在类上标注 @ControllerAdvice注解
2.添加方法 @ExceptionHandler来订阅异常
四、统一数据返回
1.为什么要有统一的数据返回?
统一数据返回格式的优点有很多,如:
- 便前端程序员更好的接收和解析后端数据接口返回的数据。
- 降低前端程序员和后端程序员的沟通成本,按照某个格式实现就行了
- 有利于项目统一数据的维护和修改。
- 有利于后端技术部们的统一规范的标准制定,不会出现稀奇古怪的返回内容。
2.统一数据返回的实现 @ControllerAdvice + ResponseBodyAdvice
总结
- 统一用户登录权限的效验使用WebMvcConfigurer + HandlerInterceptor来实现 统一异常处理
- 使用@ControllerAdvice + @ExceptionHandler来实现 统一返回值处理
- 使用@ControllerAdvice + ResponseBodyAdvice 来处理