后端基础总结

本文介绍了后端开发中的基本操作,包括使用@Validated进行参数校验,利用@ControllerAdvice和@ExceptionHandler处理全局异常,以及如何使用SLF4J和Logback进行系统日志记录和配置。
摘要由CSDN通过智能技术生成

参数校验

使用@Validated

// 1. 加上校验规则

@Data
public class User {
 
    private Long userId;
 
    @NotNull
    @Length(min = 2, max = 10)
    private String userName;
}
// 2. 使用@Validated注解

@PostMapping("/saveUser")
public Result saveUser(@RequestBody @Validated User user) {
    // 校验通过,才会执行业务逻辑处理
    return Result.ok();
}

异常处理

使用@ControllerAdvice注解的类,可以捕获全局的异常。

在Springboot中,我们一般使用 @ControllerAdvice(注解类) + @ExceptionHandler(注解方法)的方式处理全局异常

For example

  1. 情况一:处理全局的空指针异常
// 可以使用@ControllerAdvice注解类 +  @ExceptionHandler(value =NullPointerException.class) 注解方法

@RestControllerAdvice
public class GlobalExceptionHandler {
     /**
     * 处理空指针的异常
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value =NullPointerException.class)
    public BaseResponseFacade exceptionHandler(HttpServletRequest req, NullPointerException e){
        log.error("发生空指针异常!原因是:",e);
        return ResponseUtil.error(ResponseCode.ERROR);
    }
}
  1. 情况二:我想捕获处理全局的空指针异常,并且捕获自定义的异常
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;
 
/**
 * @Description 自定义异常
 */
@Data
@AllArgsConstructor
@Accessors(chain = true)
public class BizException extends RuntimeException {
    /**
     * 错误码
     */
    protected Integer errorCode;
    /**
     * 错误信息
     */
    protected String errorMsg;
}
// @ControllerAdvice注解类 + @ExceptionHandler(value = BizException.class) 注解方法

// @ExceptionHandler 可以注解我们自定义的方法

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
 
    /**
     * 处理自定义的业务异常
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value = BizException.class)
    public BaseResponseFacade bizExceptionHandler(HttpServletRequest req, BizException e){
        log.error("发生业务异常!原因是:{}",e.getErrorMsg());
        return ResponseUtil.error(e.getErrorCode(),e.getErrorMsg());
    }
 
    /**
     * 处理空指针的异常
     * @param req
     * @param e
     * @return
     */
    @ExceptionHandler(value =NullPointerException.class)
    public BaseResponseFacade exceptionHandler(HttpServletRequest req, NullPointerException e){
        log.error("发生空指针异常!原因是:",e);
        return ResponseUtil.error(ResponseCode.ERROR);
    }
}
 

系统日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
 
//  1. 使用方式: 使用LoggerFactory.getLogger() 创建即可即可
@Controller
public class DemoController {
 
  private static final Logger log = LoggerFactory.getLogger(DemoController.class);
 
  @RequestMapping("/demo")
  @ResponseBody
  String demo() {
    log.trace("Hello {}", "trace");
    log.debug("Hello {}", "debug");
    log.info("Hello {}", "info");
    log.warn("Hello {}", "warn");
    log.error("Hello {}", "error");
    return "Hello";
  }
}

2.默认情况下,日志是写在控制台上的我们可以把日志以文件的方式输出

只需在src/main/resources/下,创建一个logback.xml或logback-spring.xml就行

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
 
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值