spring-boot学习笔记(3)

一表单验证
  1. 在entity类的属性中加入注解
    @Min(value=18, message="未成年禁止入内")
  2. controller方法参数中加入
     
    pulic Girl girlAdd(@Valid Girl girl,BindingResult bindingResult){
    if(bindingResult.hasErrors()){
    System.out.println(bindingResult.getFieldError().getEdfaultMessage())
    }
    }
二 AOP统一处理请求日志
  1. AOP面向切面,是一种编程范式,与语言无关,是一种程序设计思想
  2. 只有登陆之后才能进行操作的实现方法
    a. 在pom文件中添加依赖
    <artifactId>spring-boot-starter-aop</artifactId>
    b. 新建一个处理Java Class文件 添加注解@Aspect @Component
    @Before("execution(public * com.cn.controller.GirlController.方法名(..))")
    请求某个方法之前做该操作
    public void log(){在该方法之前进行操作} 还有After方法
  3. 对b进行优化
     
    @Pointcut(execution(public * com.cn.controller.GirlController.方法名(..))
    public void log(){}
    @Before("log")
    public void doBefore(){}
三 log的使用
  1. 在HttpAspect文件中
    private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class); 参数为所在类的类名
    logger.info(“标注内容”) 写入日志的信息
四 获取访问某个方法的请求信息
  1. 在public void doBefore()传入参数JoinPoint joinPoint

    ServletRequestAttributes attributes =(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    logger.info("url={}", request.getRequestURL()); URL
    logger.info("method={}", request.getMethod()); GET PUT
    logger.info(""ip={},request.getRemoteAddr()); ip地址
    logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName()) 类名
    logger.info("class_arguement={}",joinPoint.getArgs());
    
  2. 获取某个方法返回的信息

    @AfterReturning(returning="object", pointcut="log()")
    public void doAfterReturning(Object object){
    logger.info("response={}",object.toString()); 需要函数返回的对象有toString 方法
    }
    
五.统一异常处理
  1. 新建一个Result 类,类中写上code ,msg,data三个属性
  2. 写一个ResultUtil 类
     
    public static Result success(Object object){
    Result result =new Result();
    result.setCode(200);
    result.setMsg("成功");
    result.setData(object);
    return result;
    }
    public static Result success(){
    return success(null);
    }
    public static Result error(Integer code,String msg){
    Result result = new Result();
    result.setCode(code);
    result.setMsg(msg);
    return result;
    }
  3. 调用
    if(bindingResult.hasErros()){  
    return ResultUtil.error("404",bindingResult.getFieldError().getDefaultMessage();
    }
    .....
    return Result.success(girlRepository.save(girl));
六.异常捕获
  1. 定义一个异常类

    public class GirlException extends RuntimeExpection{ //spring只会回滚RuntimeExpection
    private Integer code;
    public GirlException(Integer code,String message){
        super(message);
        this.code=code;
    }
    getCode()/setCode()方法
    }
    
  2. 定义一个异常处理类

    public class ExceptionHandle{
    @ExceptionHandle(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e){
    if(e instanceof GirlException){
      GirlException girlException = (GirlException) e;  
      return ResultUtil.error(girlException.getCode(), girlException.getMessage());
    }else{
      return ResultUtil.error(-1,"未知错误");
    }
    }
    
  3. 在service中调用

    public void getAge(Integer id) throws Exception{
    if(age
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值