目录
如图测试 controller层 和 service层 线程名不同
2. 参数校验 @Valid +@NotNull springboot
2.1.2 第二种 controller正常写 在全局异常处理中写
1. 日志的异步处理
不同线程调用 tomcat+spring两个 在执行的方法上面加 -> impl层
@EnabledAsync 加载配置类上 启动类是特殊的配置类
/** * @Async 描述的方法底层会异步执行 不由web服务线程执行 而是交给spring自带的线程池中的线程去执行 * 优点: 不会长时间阻塞web服务(例如tomcat)线程 * 一般用于数据量特别大的日志服务(频繁 耗时) * * 同时 需要配置这个注解 启动类上加注解 启动异步执行注解 * @param log * @return */[组合 @Async+@EnabledAsync]
如图测试 controller层 和 service层 线程名不同
2. 参数校验 @Valid +@NotNull springboot
如果不生效 查看导入的包是否正确
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.1.写异常处理 400异常处理
2.1.1 第一种 重写默认异常方式
(直接抛出自己定义的异常/这里运行时异常)
@PostMapping("/*")
public SystemResult recordUserADVideoLog(@RequestBody @Valid AngelAdVideoLog angelAdVideoLog,BindingResult bindingResult, HttpServletRequest request ) {
log.debug("========> * <========");
if (bindingResult.hasErrors()) {
//自定义的异常类 bindingResult.getFieldError().getDefaultMessage()是抛出的异常信息
throw new RuntimeException( bindingResult.getFieldError().getDefaultMessage());
}
2.1.2 第二种 controller正常写 在全局异常处理中写
@ExceptionHandler(MethodArgumentNotValidException.class)
public SystemResult throwCustomException(MethodArgumentNotValidException methodArgumentNotValidException) {
log.error("[ @Vaild异常捕获 ] " + methodArgumentNotValidException.getMessage());
return SystemResult.error((methodArgumentNotValidException.getBindingResult().getFieldError().getDefaultMessage()));
}
结果所示