Spring Boot统一功能处理

1. 统一数据返回格式

统一数据返回格式,就是对返回的数据做一个统一的处理:

@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {
    @Autowired
    ObjectMapper mapper;
    //判断是否要执行beforeBodyWrite方法
    @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) {
        if(body instanceof Result) {
            return body;
        }

        if(body instanceof String) {
            return mapper.writeValueAsString(Result.success(body));
        }
        return Result.success(body);
    }
}

创建一个类实现RespinseBodyAdvice接口 

@ControllerAdvice 表示控制器通知类

supports方法用于判断当前的响应是否要做处理,true表示需要,则会执行beforeBodyWrite方法来处理,false则不会执行。

注意:如果返回的结果是String类型的话,需要把处理后的body转为String类型,否则会报错。

2. 统一异常处理

如果发生异常时,我们不希望把它展示给用户可以使用统一异常处理,自定义发生异常时展示的内容:

@Slf4j
@ControllerAdvice
@ResponseBody
public class ExceptionAdvice {
    @ExceptionHandler
    public Result HandleException(Exception e) {
        log.error("发生异常:", e);
        return Result.fail("内部错误");
    }
}

这里可以写多个HandleException方法来处理不同的异常,处理异常时会按照异常的深度顺序对应来处理。

注意:添加了统一异常处理后,发生的异常都会被处理掉,也就不会出现异常信息,需要我们自己用日志打印。

相关推荐

  1. springBoot统一功能处理

    2024-04-23 11:50:02       54 阅读
  2. springBoot统一功能处理

    2024-04-23 11:50:02       46 阅读
  3. Spring 统一功能处理

    2024-04-23 11:50:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 11:50:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 11:50:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 11:50:02       82 阅读
  4. Python语言-面向对象

    2024-04-23 11:50:02       91 阅读

热门阅读

  1. level2行情+在线金融数据库

    2024-04-23 11:50:02       38 阅读
  2. 基于区块链技术的域名系统设计与实现

    2024-04-23 11:50:02       40 阅读
  3. 数据结构-动态规划策略

    2024-04-23 11:50:02       37 阅读
  4. 高通平台Android11 添加新分区的方法

    2024-04-23 11:50:02       26 阅读
  5. Spring控制反转(IOC)是什么

    2024-04-23 11:50:02       27 阅读
  6. 数字化转型导航:电子元器件零售商策略探索

    2024-04-23 11:50:02       43 阅读