商城项目-第一天

商城项目

一、统一的结果集处理

在这里插入图片描述

1.1新建ResultEnum枚举类

定义数据类型、添加构造方法、定义枚举类型()

@Getter
public enum ResultEnum {

    SUCCESS(200,"成功"),
    FAIL(500,"失败"),

    private Integer code;

    private String message;

    //通过构造方法来对枚举进行赋值
    ResultEnum(Integer code,String message){
        this.code = code;
        this.message = message;
    }
}

1.2新建统一的Result结果集

定义数据类型、添加枚举类构造方法

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    //状态码
    private Integer code;
    //信息
    private String message;
    //数据
    private Object data;

    //枚举类型,不带数据的结果集
    public Result(ResultEnum resultEnum){
        this.code = resultEnum.getCode();
        this.message = resultEnum.getMessage();
    }

    //枚举类型,不带数据的结果集
    public Result(ResultEnum resultEnum,Object data){
        this.code = resultEnum.getCode();
        this.message = resultEnum.getMessage();
        this.data = data;
    }

}

1.3新建ResultUtil结果集工具类

不懈怠数据䣌枚举构造、携带数据的枚举构造

//工具类的方法统一是静态方法
public class ResultUtil {

    //不携带数据的枚举构造
    public static Result success(ResultEnum resultEnum){
        return new Result(resultEnum);
    }

    //携带数据的枚举构造
    public static Result success(ResultEnum resultEnum, Object data){
        return new Result(resultEnum,data);
    }

    //不携带数据的枚举构造
    public static Result fail(ResultEnum resultEnum){
        return new Result(resultEnum);
    }

    //携带数据的枚举构造
    public static Result fail(ResultEnum resultEnum,Object data){
        return new Result(resultEnum,data);
    }

}

1.4新建TestController测试类

添加@RestController注解、新建测试方法、添加@GetMapping注解、启动测试

@RestController
public class TestController {

    @GetMapping("/test1")
    public Result test1(){
        return ResultUtil.success(ResultEnum.SUCCESS,"hello,world");
    }

}

二、统一的异常处理

在这里插入图片描述

2.1 404页面处理

找不到映射器抛异常设置为true、视图映射器设置为false

# 处理404页面
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false

2.2新建全局异常类GlobalException

定义成员(结果枚举ResultRnum)、带枚举的构造方法

@Data
public class GlobalException extends RuntimeException{

	private ResultEnum resultEnum;

	public GlobalException(ResultEnum resultEnum){
		super();
		this.resultEnum = resultEnum;
	}
}

2.3新建全局异常处理器GlobalExceptionHandler

404异常处理、系统异常、业务异常

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

	@ExceptionHandler(value = NoHandlerFoundException.class)
	public Result noHandlerFoundExceptionHandler(NoHandlerFoundException exception){
		log.error("404:{}", exception.getMessage());
		return ResultUtil.fail(ResultEnum.RESOURCES_NOT_FOUND);
	}
	
	@ExceptionHandler(value = Exception.class)
	public Result systemException(Exception exception){
		log.error("系统异常:{}", exception.getMessage());
		return ResultUtil.fail(ResultEnum.EXCEPTION);
	}

	@ExceptionHandler(value = GlobalException.class)
	public Result globalException(GlobalException exception){
		log.error("业务异常:{}", exception.getMessage());
		return ResultUtil.fail(exception.getResultEnum());
	}

}

2.4编写测试

抛出全局异常(系统异常)、抛出业务异常、启动测试异常处理

@RestController
public class TestController {

    @GetMapping("/test1")
    public Result test1(){
        return ResultUtil.success(ResultEnum.SUCCESS,"hello,world");
    }

    @GetMapping("/test2")
    public Result test2(){
        throw new GlobalException(ResultEnum.EXCEPTION);
    }

    @GetMapping("/test3")
    public Result test3(){
        throw new GlobalException(ResultEnum.ERROR);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值