003--【秒杀】登录异常处理

1、写作背景

电商的秒杀项目,没有尝试过,想通过该项目进行项目的整理流程学习


2、学习目的

  • 学习参数校验
  • 学习数据库设计
  • 学习全局异常处理
  • 学习分布式Session

3、学习要点

  • MyBatis部分代码地址:https://gitee.com/enzoism/SpringBootSecKill/tree/login-base
003--【秒杀】登录异常处理_第1张图片

4、项目设计

  • 使用标注进行对象的参数接收(接口测试会模拟各种异常,所以很有必要,不要在代码中进行异常判断)
  • 用户登录场景切记不要进行明文面传输(两次MD5+Salt加密)
  • 进行全局异常处理(系统能够识别的报错,就不要抛出500异常)
  • 异常抛出的格式化封装(简化前端的异常接收)

4.1)JavaBean校验设计

  • 配合pom.xml
        
        
            org.springframework.boot
            spring-boot-starter-validation
        
  • 进行常用的Bean配置

配置思路:点击已经存在的标注,仿照先写一个大概,然后实现ConstraintValidator即可,如果想添加自己的属性判断,可以自己添加

##简单展示如下
public class Test implements ConstraintValidator {
    @Override
    public void initialize(IsMobile constraintAnnotation) {
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        return false;
    }
}
#扩展演示如下:
public class IsMobileValidator implements ConstraintValidator {

    // 自己添加配置属性
    private boolean required = false;

    @Override
    public void initialize(IsMobile constraintAnnotation) {
        required = constraintAnnotation.required();
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if(required) {
            return RegularUtils.isMobile(value);
        }else {
            if(StringUtils.isEmpty(value)) {
                return true;
            }else {
                return RegularUtils.isMobile(value);
            }
        }
    }
}
  • 使用的时候,直接添加标注即可(常用作接收前端传递参数校验,后端自己的对象最好不适用,进行单独逻辑处理)
public class LoginVo {

    @NotNull
    @IsMobile
    private String mobile;
    
    @NotNull
    @Length(min=32)
    private String password;
    
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "LoginVo [mobile=" + mobile + ", password=" + password + "]";
    }
}
003--【秒杀】登录异常处理_第2张图片

你可能感兴趣的:(003--【秒杀】登录异常处理)