0219 springmvc-拦截器和响应增强
2020-02-19 16:07:16来源:博客园 阅读 ()
0219 springmvc-拦截器和响应增强
拦截器
拦截器分同步拦截器和异步拦截器;
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);
}
}
小结
通过本小节,你可以学到:
- 如何配置拦截器,打印每个http接口的耗时;
- 如何设置接口的统一返回格式;
代码点我获取!
原创不易,转载请注明出处。
原文链接:https://www.cnblogs.com/snidget/p/12333933.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java Web 笔记(3)
下一篇:Java虚拟机——JVM
- springboot~拦截器的使用场景 2020-05-28
- SpringMVC高级-拦截器如何正确运用?案例详解 2020-05-21
- Spring拦截器WebMvcConfigurer针对Swagger的拦截问题 2020-05-21
- Mybatis 分页:Pagehelper + 拦截器实现 2020-05-12
- Springboot登录拦截器 2020-05-01
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash