美文网首页
0219 springmvc-拦截器和响应增强

0219 springmvc-拦截器和响应增强

作者: 李福春carter | 来源:发表于2020-02-19 23:46 被阅读0次

拦截器

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

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
@ControllerAdvice
public 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<String,Object> map = new HashMap();
       map.put("result","true");
       map.put("data",body);
       return new ObjectMapper().writeValueAsString(map);
    }
}

小结

image.png

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

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

代码点我获取!

原创不易,转载请注明出处。

相关文章

  • 0219 springmvc-拦截器和响应增强

    拦截器 拦截器分同步拦截器和异步拦截器; HandlerInterceptor 方法和执行时机 可以看Dispat...

  • axios--拦截器(1)

    关于axios的拦截器是一个作用非常大,非常好用的东西。分为请求拦截器和响应拦截器两种。 请求拦截器响应拦截器 我...

  • 请求拦截器 与 响应拦截器(React)

    前提: 请求拦截器和响应拦截器主要应用场景:请求网络接口请求拦截器:发送请求的时候,携带一些信息响应拦截器:接收到...

  • 请求拦截器 与 响应拦截器(Vue)

    前提: 请求拦截器和响应拦截器主要应用场景:请求网络接口请求拦截器:发送请求的时候,携带一些信息响应拦截器:接收到...

  • 小程序添加fly配置

    添加请求拦截器 添加响应拦截器,响应拦截器会在then/catch处理之前执行 挂载原型

  • axios安装与基本配置

    安装:$npm install axios --save get请求: post请求: 请求拦截器和响应拦截器

  • SpringMVC-响应内容

    一、@ResponseBody(重点) 1、作用 该注解用于将Controller的方法返回的对象,通过适当的Ht...

  • SpringMVC-拦截器

    1、定义 2、定义拦截器2.1、定义一个类2.2、拦截器配置2.2.1、 针对某种mapping配置2.2.2、配...

  • SpringMVC-拦截器

    SpringMVC提供了两种拦截:HandlerInterceptor和WebRequestInterceptor...

  • SpringMVC-拦截器

网友评论

      本文标题:0219 springmvc-拦截器和响应增强

      本文链接:https://www.haomeiwen.com/subject/yxqtqhtx.html