博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0219 springmvc-拦截器和响应增强
阅读量:4211 次
发布时间:2019-05-26

本文共 2222 字,大约阅读时间需要 7 分钟。

拦截器

拦截器分同步拦截器和异步拦截器;

HandlerInterceptor

方法和执行时机

可以看DispathcerServlet的原来确定它的三个方法的执行时机;

AsynHandlerInterceptor

看注释,主要用来清理在并发环境加清理ThreadLocal的数据;

ResponseBodyAdvice

对返回值备注了@ResponseBody或者返回ResponseEntity做了一些加工;

会在使用消息转换器转换为json数据之前进行数据转换输出;

package com.springbootpractice.interceptor.config;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.springbootpractice.interceptor.config.interceptor.MyInterceptor;import lombok.SneakyThrows;import org.springframework.context.annotation.Configuration;import org.springframework.core.MethodParameter;import org.springframework.http.HttpStatus;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.http.server.ServerHttpRequest;import org.springframework.http.server.ServerHttpResponse;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;import java.util.HashMap;import java.util.Map;/** * 说明:配置拦截器和设置统一返回格式 * @author carter * 创建时间: 2020年02月19日 11:03 下午 **/@Configuration@ControllerAdvicepublic class WebConfig implements WebMvcConfigurer, ResponseBodyAdvice {    @Override    public void addInterceptors(InterceptorRegistry registry) {        HandlerInterceptor myIntercepter = new MyInterceptor() ;        registry.addInterceptor(myIntercepter).addPathPatterns("/**");    }    @Override    public boolean supports(MethodParameter returnType, Class converterType) {        return true;    }    @SneakyThrows    @Override    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {       Map
map = new HashMap(); map.put("result","true"); map.put("data",body); return new ObjectMapper().writeValueAsString(map); }}

小结

image.png

通过本小节,你可以学到:

  1. 如何配置拦截器,打印每个http接口的耗时;
  2. 如何设置接口的统一返回格式;

image.png

原创不易,转载请注明出处,欢迎多沟通交流

你可能感兴趣的文章
JAVA实现文件树
查看>>
linux -8 Linux磁盘与文件系统的管理
查看>>
linux 9 -文件系统的压缩与打包 -dump
查看>>
PHP在变量前面加&是什么意思?
查看>>
ebay api - GetUserDisputes 函数
查看>>
ebay api GetMyMessages 函数
查看>>
php加速器 - zendopcache
查看>>
手动12 - 安装php加速器 Zend OPcache
查看>>
set theme -yii2
查看>>
yii2 - 模块(modules)的view 映射到theme里面
查看>>
yii2 - controller
查看>>
yii2 - 增加actions
查看>>
php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
查看>>
magento url中 uenc 一坨编码 base64
查看>>
强大的jQuery焦点图无缝滚动走马灯特效插件cxScroll
查看>>
Yii2.0 数据库查询
查看>>
yii2 db 操作
查看>>
mongodb group 有条件的过滤组合个数。
查看>>
关于mongodb的 数组分组 array group
查看>>
MongoDB新的数据统计框架介绍
查看>>