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

2021-12-28  本文已影响0人  辛夷z
使用方式:
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);
  }
上一篇下一篇

猜你喜欢

热点阅读