美文网首页
实现maven组件系列,封装:全局异常、错误码校验、业务层模版实

实现maven组件系列,封装:全局异常、错误码校验、业务层模版实

作者: 辛夷z | 来源:发表于2021-12-28 19:39 被阅读0次
    使用方式:
    maven ,配置settings后,引入到项目的pom中:
    <dependency>
      <groupId>com.zl.common-core</groupId>
      <artifactId>common-core</artifactId>
      <version>1.0.0-SNAPSHOT</version>
    </dependency>
    

    下一步计划:
    会继续封装可复用的组件、轮子代码

    1、规范使用CommonCheck,提高代码质量(逻辑更清晰、代码更简单、好维护扩展)

    类路径:com.zl.common.service.CommonService

    目的:
    1. 规范check处理,封装CommonCheck(拦截校验client request,业务数据校验,不合法直接throw)
    1. 规范throw处理,封装GlobalExceptionHandel(错误类型,MDC处理,response封装等)
    1. 规范ErrorCode错误码,业务按需定义code和描述(参照 http code码,默认throw ServiceException)
    使用举例:
      @Override
      public void checkParams(Test test) {
        CommonCheck.paramNotEmpty(test, "test");
        CommonCheck.paramNotEmpty(test.getName(), "name");
        CommonCheck.paramLengthUnValid(test.getName(), "name", Constants.NAME_MIN_LENGTH,
            Constants.NAME_MAX_LENGTH);
      }
    
    2、规范使用模版方法(如:ResultTemplate),提高代码质量(按业务定制业务执行逻辑流程,保障check、execute,return能覆盖到)

    类路径:com.zl.common.template.*
    举例:ResultTemplate

    package com.zl.common.template;
    
    import com.zl.common.result.Result;
    import com.zl.common.result.ResultGenerator;
    
    public abstract class ResultTemplate<T> {
        public ResultTemplate() {
        }
    
        public abstract void checkParams(T t);
    
        public abstract Object execute(T t);
    
        public Result result(Object t) {
            return ResultGenerator.genSuccessResult(t);
        }
    
        public final Result process(T t) {
            this.checkParams(t);
            Object t1 = this.execute(t);
            return this.result(t1);
        }
    }
    
    目的:
    1. 规范service层执行流程,封装Template(覆盖:有返回值、无返回值、强弱校验、链式处理等场景)
    1. 规范check处理,new Template时,自动带出checkParams(校验:非空、合法性、长度等)
    1. 规范execute处理,业务逻辑代码实现,自动包装(覆盖:返回值封装格式等)
    使用举例:
      @Override
      public Result insertModel(Test test) {
        return new ResultTemplate<Test>() {
          @Override
          public void checkParams(Test test) {
            CommonCheck.paramNotEmpty(test, "test");
            CommonCheck.paramNotEmpty(test.getName(), "name");
            CommonCheck.paramLengthUnValid(test.getName(), "name", Constants.NAME_MIN_LENGTH,
                Constants.NAME_MAX_LENGTH);
          }
    
          @Override
          public Object execute(Test test) {
            return save(test);
          }
        }.process(test);
      }
    

    相关文章

      网友评论

          本文标题:实现maven组件系列,封装:全局异常、错误码校验、业务层模版实

          本文链接:https://www.haomeiwen.com/subject/ysxmqrtx.html