首页 > 其他分享 >框架建设实战3——创建框架基础组件frame-base

框架建设实战3——创建框架基础组件frame-base

时间:2024-12-06 20:30:24浏览次数:9  
标签:code String 框架 frame private base 基类 message public

frame-base 顾名思义,就是定义一些基础的类。便于框架进行规约。

主要有(不限于)如下几点:

1.接口基类

public class BaseController {

    /**
     * 接口标准响应
     * @param codeDetail 错误码编码
     * @param message  错误码描述
     * @param data
     * @return
     * @param <T>
     */
    public <T> ResponseData<T> responseData(String codeDetail, String message, T data) {
        return new ResponseData(codeDetail, message, data);
    }
}

2.DTO(数据传输对象)基类

/**
 * DTO基类
 */
@Data
public class BaseDTO implements Serializable {

    private static final long serialVersionUID = -23423423423L;

}

3.分页的出入参

入参:

/**
 * 标准分页查询入参
 */
@Data
@Builder
public class PageRequestDTO extends BaseDTO {

    /**
     * 第几页
     */
    private Integer pageIndex;

    /**
     * 每页记录数目
     */
    private Integer pageSize;

}

出参:

@Builder
@Data
public class PageResponseDTO<T> extends BaseDTO {
    
    /**
     * 当前第几页
     */
    private Integer pageIndex;

    /**
     * 每页记录数
     */
    private Integer pageSize;

    /**
     * 记录总数
     */
    private Integer count;
    
    /**
     * 具体数据记录list
     */
    private List<T> dataList;
    
}

4.接口返回的响应体

@Builder
@Data
public class ResponseData<DTO> extends BaseDTO {

/**
* 响应码
*/
private String code;

/**
* 响应描述
*/
private String msg;

/**
* 真实业务数据
*/
private DTO data;
}

5.异常基类

基本异常基类:

/**
 * 运行时异常基类
 */
public class BaseRuntimeException extends RuntimeException {

    protected String code;
    protected String msg;

    public BaseRuntimeException(String message, Throwable cause) {
        super(message, cause);
        this.msg = message;
    }

    public BaseRuntimeException(String code, String message) {
        super(message);
        this.code = code;
        this.msg = message;
    }
}

业务异常基类:

/**
 * 基本业务异常,所有业务异常都基于此,便于框架的统一异常处理
 */
public class BaseBusinessException extends BaseRuntimeException {

    public BaseBusinessException(String message, Throwable cause) {
        super(message, cause);
    }

    public BaseBusinessException(String code, String message) {
        super(code,message);
    }
}

当然,我们可以扩展不同的异常类型,比如业务校验异常、警告类异常等……

6.统一异常处理

/**
 * 全局异常处理
 */
@ResponseBody
@ControllerAdvice
public class GlobalExceptionHandler {
    
    private static String DEFAULT_ERROR_CODE = "500";
    private static String DEFAULT_ERROR_MSG = "未知异常";

    @ExceptionHandler
    public ResponseData handler(BaseBusinessException e) {
        return ResponseData.builder().code(e.getCode()).msg(e.getMsg()).build();
    }
    @ExceptionHandler
    public ResponseData handler(BaseRuntimeException e) {
        return ResponseData.builder().code(e.getCode()).msg(e.getMsg()).build();
    }

    /**
     * 兜底处理
     * @param e
     * @return
     */
    @ExceptionHandler
    public ResponseData handler(Throwable e) {
        return ResponseData.builder().code(DEFAULT_ERROR_CODE).msg(DEFAULT_ERROR_MSG).build();
    }
}

当然,这些异常处理方法可以根据新的异常类别进行扩展。

以上是web开发常用的基类信息。基本涵盖了一个接口的所有结构。

写在最后

由上述代码可以得知,框架开发就是把共性问题抽出来,然后统一定义和处理。而这个能力表现在:

1.规范

接口规范包含:入参、出参、异常码、异常处理、分页规范、接口基类等。

如此,可以利用框架的能力,对接口进行统一处理。比如,基于AOP等做额外的事情。

2.统一

统一基类,不论是对象基类,还是接口基类,就好比每个程序员的交互语言得到了统一,就好比工程师文化的统一,降低大家的沟通成本。

比如,后端定义了统一的返回体,前端使用接口时候就能标准化处理;定义了统一的异常基类,也便于统一的进行异常处理。

总之,统一规范,也是为了增强框架的统一处理能力。二者相辅相成。

标签:code,String,框架,frame,private,base,基类,message,public
From: https://blog.csdn.net/liuyatao_/article/details/144257829

相关文章

  • 通义开源语音处理框架 ClearerVoice-Studio;亚马逊 Nova 计划明年发布端到端语音模型丨
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 探索LangChain:构建智能应用的框架和工具
    引言在现代应用开发中,特别是在涉及自然语言处理的场景中,LangChain作为一个强大的框架,为开发者提供了丰富的工具和组件,用于创建智能和动态的应用。本文旨在引导您了解LangChain的核心架构,组件和一些使用示例,帮助初学者和专业人士都能迅速上手。主要内容1.LangChain的架构......
  • dsp&codec&baseband
    what'sdspADigitalSignalProcessor(DSP)isaspecializedmicroprocessordesignedspecificallyforprocessingdigitalsignalsinreal-time.Letmebreakthisdown:CoreFunctionsofDSPMainDSPOperations:├──DigitalFiltering├──SignalAnaly......
  • flask框架爱团购系统设计与实现毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于团购系统的研究,现有研究主要集中在大型综合电商平台的团购功能上,如淘宝、美团等平台的团购模式。专门针对特定的爱团购系统的研究......
  • flask框架城镇智慧停车系统毕设源码+论文
    校园二手货物交易平台m1a2o本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于城镇智慧停车系统的研究,现有研究多集中于大城市的停车系统构建与优化,如城市级智慧停车管理系统主要聚......
  • Hbase表操作练习
    #表操作练习实验步骤####  打开命令行,启动Hadoop、Hbase、Zookeeper服务&emsp;&emsp;1、启动hadoop,执行命令:```shellstart-all.sh```&emsp;&emsp;查看进程,是否启动成功```root@localhost:~# jps2626DataNode2998ResourceManager3110NodeManager2......
  • 技术框架中对MyBatis的一对一查询的学习
    高级查询之一对一查询查询条件根据游戏角色ID,查询账号信息我们在之前创建的映射器接口GameMapper.java中添加接口方法,如下: /***根据角色ID查询账号信息*@paramid角色Id*@return角色实体对象*/publicRoleEntityselectRoleById(intid);......
  • js前端框架alpine.js使用
    ‌Alpine.js‌是一个轻量级的前端框架,旨在为开发者提供一种简单而强大的方式来构建动态用户界面。它的设计理念是“少即是多”,通过极简的API和极小的体积,让开发者能够快速上手并构建出功能丰富的交互式网页‌。技术特点‌极简的API‌:Alpine.js的API设计非常简洁,开发者只......
  • Azure Pipelines 监听文件改动时自动发布 .Net Core或者.Net Framework package到arti
    示例项目:https://dev.azure.com/guorj/_git/PackDemo因为一些需求,在代码有改动以后需要更新响应的package,以供其他项目来使用,但是每次手动打包比较麻烦,就想着给自动化了,可怜自动化出来这么久都没有用过。代码托管在微软的Azure上,所以使用的是AzurePipelines功能。懒得细写了,包......
  • python新闻评论情感分析可视化系统 Flask框架 NLP情感分析 计算机毕业设计(源码)✅
    python新闻评论情感分析可视化系统Flask框架NLP情感分析计算机毕业设计(源码)✅1、项目介绍技术栈:Flask框架、snownlp情感分析、Echarts可视化、NLP情感分析、LDA算法、Kmeans算法新闻评论情感分析可视化系统2、项目界面(1)系统首页(2)主题词汇分析(3)热门新闻分析......