實現(xiàn)maven組件系列,封裝:全局異常、錯誤碼校驗、業(yè)務(wù)層模版實現(xiàn)

使用方式:
maven ,配置settings后,引入到項目的pom中:
<dependency>
  <groupId>com.zl.common-core</groupId>
  <artifactId>common-core</artifactId>
  <version>1.0.0-SNAPSHOT</version>
</dependency>

下一步計劃:
會繼續(xù)封裝可復用的組件、輪子代碼

1、規(guī)范使用CommonCheck,提高代碼質(zhì)量(邏輯更清晰、代碼更簡單、好維護擴展)

類路徑:com.zl.common.service.CommonService

目的:
  1. 規(guī)范check處理,封裝CommonCheck(攔截校驗client request,業(yè)務(wù)數(shù)據(jù)校驗,不合法直接throw)
  1. 規(guī)范throw處理,封裝GlobalExceptionHandel(錯誤類型,MDC處理,response封裝等)
  1. 規(guī)范ErrorCode錯誤碼,業(yè)務(wù)按需定義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、規(guī)范使用模版方法(如:ResultTemplate),提高代碼質(zhì)量(按業(yè)務(wù)定制業(yè)務(wù)執(zhí)行邏輯流程,保障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. 規(guī)范service層執(zhí)行流程,封裝Template(覆蓋:有返回值、無返回值、強弱校驗、鏈式處理等場景)
  1. 規(guī)范check處理,new Template時,自動帶出checkParams(校驗:非空、合法性、長度等)
  1. 規(guī)范execute處理,業(yè)務(wù)邏輯代碼實現(xiàn),自動包裝(覆蓋:返回值封裝格式等)
使用舉例:
  @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);
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容