主数据管理系统(3)- 微服务共享的核心模块
作者:小黄小陈(公众号同名)

在微服务架构中,common-core(或称为common、core-common)是所有微服务共享的核心模块,主要存放通用工具类、基础配置、公共模型、全局异常处理等跨服务复用的代码,目的是减少重复开发、统一系统规范。但是,common-core中没有启动类,可以将它理解成一个jar包文件或pom依赖,供其他微服务引入使用。在这里插入图片描述
1、建立核心模块的方法,同样的选中根目录,右键,选择new→module
在这里插入图片描述
2、在New Module界面中,名字输入为common-core,然后直接create即可
在这里插入图片描述
3、创建完后,会生成一个common-core的微服务,同时根目录下的pom.xml中会新增一个标签
在这里插入图片描述
4、效仿之前的做法,将common-core下的启动类删除,同时修改路径为com.example.common
在这里插入图片描述
5、现在在common-core中建立几个包:enums(存放枚举类)、utils(存放一些工具类)、exception(存放一些异常代码和异常类)、config(存放配置类)、aspect(存放切面类)、model(存放)、dto(存放数据传输对象)、model(实体类),暂时先创建这些。
在这里插入图片描述
6、创建完包之后,我们定义一个枚举类和异常类,后续根据情况再往里面增加
①首先创建一个全局异常类

package com.example.common.exception;

/**

 * 全局异常类 * 

 * @author ryan 

 * @since 2025年09月19日 

 */

 public class BaseException extends Exception {    /* 序列化的字段 */    private static final long serialVersionUID = 1L;    

   /* 异常码 */    

   private Integer code;    

   /* 异常信息 */    

   private String errorMessage;    

   public BaseException() {    }    

   public BaseException(Integer code, String errorMessage) {

           this.code = code;        

           this.errorMessage = errorMessage;    

   }    

   /**

    * 获取     

    * @return code     

    */    

    public Integer getCode() {

           return code;    

    }    

    /** 

    * 设置     

    * @param code     

    */    

    public void setCode(Integer code) {

            this.code = code;    

            }    

    /**     

    * 获取     

    * @return errorMessage     

    */    

    public String getErrorMessage() {        

      return errorMessage;    

    }    

    /**

    * 设置     

    * @param errorMessage     

    */    

    public void setErrorMessage(String errorMessage) {        

      this.errorMessage = errorMessage;    

    }    

   

    public String toString() {        

      StringBuilder sb = new StringBuilder();        

      if(this.code != null) {            

        sb.append("errorCode:");            

        sb.append(this.code);        

      }        

      if(this.errorMessage != null) {

        if(sb.length() > 0) { 

          sb.append(", ");           

        }            

        sb.append("errorMessage:");            

        sb.append(this.errorMessage);        

      }        

      return sb.toString();    

      }

    }

②定义一个异常code类

package com.example.common.exception;

/** 

* 常量,异常的code的定义 

* 

* @author ryan 

* @since 2025年09月19日 

*/

public class ExceptionCode extends Throwable{

    /* 基本类的异常码 用1xx或者2xx */    

    /* 业务类的异常码 用1000xx或者2000xx */    

    /**

    * 请求成功     

    */    

    private static final long SUCCESS = 200;    

    /**     

    * 参数不为空     

    */    

    private static final Integer PARAM_NOT_NULL = 400;

}

7、创建一个响应dto对象,ApiResponse,这个对象用于内部之间或者外部之间调用返回结果用。

package com.example.common.dto;

/** * 返回结果类 

* 

* @author ryan 

* @since 2025年09月19日 

*/

public class ApiResponse<T> {  

  //<T> 表示泛型参数    

  /* 响应码 */    

  private Integer code;    

  /* 请求结果 */    

  private String message;    

  /* 返回json信息 */    

  private T data;    

  public ApiResponse() {    }    

  public ApiResponse(Integer code, String message, T data) { 

       this.code = code;        

       this.message = message;        

       this.data = data;    

  }    

  /**     

  * 获取     

  * @return code     

  */    

  public Integer getCode() {        

    return code;    

  }    

  /**     

  * 设置     

  * @param code     

  */    

  public void setCode(Integer code) {        

    this.code = code;    

  }    

  /**     

  * 获取     

  * @return message     

  */    

  public String getMessage() {

        return message;    

  }    

  /**     

  * 设置     

  * @param message     

  */    

  public void setMessage(String message) {        

    this.message = message;    

  }    

  /**     

  * 获取     

  * @return data     

  */    

  public T getData() {        

    return data;    

  }    

  /**     

  * 设置     

  * @param data     

  */    

  public void setData(T data) {        

    this.data = data;    

  }    

  public String toString() {        

    return "ApiResponse{code = " + code + ", message = " + message + ", data = " + data + "}";    

  }

}

8、至于这个核心模块怎么被其他微服务引用呢

这个很简单,直接在根目录下的pom文件中,按照依赖引入的方式直接引入即可

<dependency>

    <groupId>com.example.common</groupId>    

    <artifactId>common-core</artifactId>    

    <version>1.0.0</version>

</dependency>

其他微服务怎么访问呢

同样引入依赖

<dependency>

    <groupId>com.example</groupId>    

    <artifactId>common-core</artifactId>    

    <version>1.0-SNAPSHOT</version> <!-- 与父项目版本一致 -->

</dependency>

9、这样配置完后,在其他微服务中可以注入注入依赖,然后直接使用了,举个例子,在person-service中随便创建一个类,然后引用核心模块的内容即可
在这里插入图片描述
10、今天就讲解一下核心模块的一些简单的知识,为后面做一下铺垫,接下来后面我们要开始完善person-service中的一些简单的内容

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐