文档章节

0219 springmvc-拦截器和响应增强

李福春carter
 李福春carter
发布于 02/19 23:45
字数 382
阅读 164
收藏 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

代码点我获取!

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

© 著作权归作者所有

李福春carter
粉丝 0
博文 87
码字总数 95204
作品 0
深圳
私信 提问
加载中

评论(0)

Spring AOP 创建代理的源码解析

相关文章 Spring AOP 注解方式源码解析 Spring AOP 功能使用详解 Spring 的 getBean 方法源码解析 Spring bean 创建过程源码解 Spring 中 bean 注册的源码解析 前言 在上篇文章 Spring AOP 注...

TSMYK
2019/01/01
265
0
JAVA Filter\Interceptor\Aspect 对比

0、拦截顺序 1、过滤器 Filter 可以拿到原始http的请求和响应的信息 但是拿不到请求方法的信息 2、拦截器 interceptor 可以拿到原始http的请求和响应的信息 可以拿到请求方法的信息 但是拿不...

moon888
2018/05/12
81
0
3.5 ProxyFactoryBean实现AOP的过程总结

回顾下通过ProxyFactoryBean实现AOP的整个过程: 首先需要对目标对象以及拦截器进行正确配置,以便AopProxy代理对象顺利产生;这些配置可以通过配置ProxyFactoryBean的属性来完成,或者通过编...

edwardGe
2018/06/04
46
0
Java Web 面试中关于Spring MVC必问题,不看血亏!

前言 Spring MVC是Spring构建在Servlet API上的Web框架。目前大部分的Java Web 开发已经使用Spring MVC 来做。它提供了模型 - 视图 - 控制器架构,可用于开发灵活的Web应用程序。在本教程中,...

码农小胖哥
2019/09/23
96
0
SpringMVC常见面试题总结【概念】

什么是Spring MVC?介绍你对SpringMVC的理解。 springmvc是一个基于java实现了mvc设计模式的轻量级web框架,通过把model,view,controller分离,将web层进行解耦,把复杂的web应用分成几部分...

薛小二
2019/05/24
96
0

没有更多内容

加载失败,请刷新页面

加载更多

单利模式

花乐天
11分钟前
3
0
生成ssh_key

#生成包含mail的sshkeyssh-keygen -t rsa -C "your_email@example.com"#文件存放路径和文件名Enter file in which to save the key (/Users/teddy/.ssh/id_rsa): /Users/teddy/.ssh/id_r......

人中泰迪
12分钟前
12
0
代理模式

代理模式(Proxy Pattern)是只为其他对象提供一种代理,以控制对这个对象的访问,属于结构行模式。 代理模式一般包含三种角色: 抽象主题角色:抽象主题类的主要职责是声明真实主题与代理的...

xjkvkv
14分钟前
11
0
SQLPro for MySQL for Mac(SQL数据库管理工具) v1.0.315

sqlpro for mysql mac是一款运行在Mac OS平台上的SQL数据库管理工具,轻量级但功能强大的数据库mysql客户端,允许快速和简单的访问MySQL服务器,包括那些驻留在Amazon RDS,方便和快速的连接到...

麦克W
15分钟前
12
0
文件处理及分区管理

{6.shell脚本命令} [1.diff] diff file file1 **比较两个文件的不同 -c **显示周围的行 -u **按照一格式统一输出生成补丁 -r **比较两个目录中文件的不同 patch file file.patch **打补丁 -b...

osc_5ijle82k
23分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部