统一结果处理,统一异常处理,统一日志处理
统一结果处理
在前后端分离的项目中,我们需要后端返回json数据,往往我们采用统一结果的封装的方式,方便前端处理
我们需要两个类,一个枚举类封装状态和消息,一个结果类封装数据
@Getter
public enum ResultCode {
SUCCESS(200,"成功"),
FAIL(201,"错误");
private final Integer code;
private final String msg;
ResultCode(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}
@Data
public class Result {
private Integer code;
private String msg;
private Object data;
public static Result success(Object data){
Result result = new Result();
result.setCode(ResultCode.SUCCESS.getCode());
result.setMsg(ResultCode.SUCCESS.getMsg());
result.setData(data);
return result;
}
}
这里只是简单写了下,主要是提供个思路,实际中ResultCode枚举类应该是非常丰富的,可以定义成功,失败,没有权限,密码错误等等。
统一异常处理
//@ControllerAdvice是一个加强的Controller而@RestControllerAdvice表明结果为json数据
@RestControllerAdvice
public class GlobalException{
@ExceptionHandler(Exception.class)//指明异常的类型
public Result error(Exception e){
return Result.failed(e);
}
}
需要注意的是系统异常会自动抛出,如果是自己定义的异常需要手动抛出异常
统一日志处理
springboot默认使用Logback进行日志处理
日志级别有(从高到低):FATAL(致命),ERROR(错误),WARN(警告),INFO(信息),DEBUG(调试),TRACE(跟踪)或者 OFF(关闭),默认的日志配置在消息写入时将消息回显到控制台。默认情况下,将记录错误级别、警告级别和信息级别的消息。可以修改配置文件更改
logging.level.root=WARN
默认是只在控制台输出日志,也可以设置输出到文件中
logging.path=
logging.path.file=
我们如何在指定位置打印日志呢?
方法一:
获取日志对象,打印日志
private final Logger log = LoggerFactory.getLogger(this.getClass()); //this.getClass()代表传入当前类
log.info("msg");
方法二:
通过lombok的@Slf4j,自动创建日志对象,对象名就为log
我有一壶酒
足以慰风尘
尽倾江海里
赠饮天下人