0
点赞
收藏
分享

微信扫一扫

数据结构—基础知识:哈夫曼编码

编程练习生J 2024-02-03 阅读 11

 

目录

拦截器:是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码:

自定义拦截器

统一数据格式,要包含状态码,错误信息​编辑

出现针对String类型的错误​​​​​​​

为什么要统一

统一功能来实现捕捉到异常。​编辑

@ControllerAdvice源码分析


解决方法:


public class TestController {
@RequestMapping("/t1")
public String t1(){
return "t1";
 }
@RequestMapping("/t2")
public boolean t2(){
return true;
 }
@RequestMapping("/t3")
public Integer t3(){
return 200;
 }
} 
解决⽅案:
import com.example.demo.model.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
@Slf4j
@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {
private static ObjectMapper mapper = new ObjectMapper();
@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) {
//如果返回结果为String类型, 使⽤SpringBoot内置提供的Jackson来实现信息的序列化
if (body instanceof String){
return mapper.writeValueAsString(Result.success(body));
 }
return Result.success(body);
 }
}

为什么要统一

统一功能来实现捕捉到异常。

Spring容器最开始启动时,会进行初始化的工作,其中会对异常进行处理,当异常项有多个匹配的时候,Spring会对其顺序依次排,找出最符合的报异常。

​​​​​​​

@ControllerAdvice源码分析

当Controller抛出异常时, DispatcherServlet 通过

ExceptionHandlerExceptionResolver 来解析异常,⽽

ExceptionHandlerExceptionResolver ⼜通过 ExceptionHandlerMethodResolver 来解析异常, ExceptionHandlerMethodResolver 最终解析异常找到适⽤的@ExceptionHandler标注

举报

相关推荐

0 条评论