依赖管理

  1. 新建一个文件夹,新建pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.woniuxy.mall131</groupId>
        <artifactId>mall-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>   
    
        <name>mall-parent</name>
        <description>全局父pom,管理公共依赖以及所有依赖版本</description>
    
        <properties>
            <maven.compiler.source>17</maven.compiler.source>
            <maven.compiler.target>17</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <spring-boot.version>3.5.3</spring-boot.version>
            <spring-cloud-alibaba.version>2025.0.0.0</spring-cloud-alibaba.version>
            <spring-cloud.version>2025.0.3</spring-cloud.version>
        </properties>
        <dependencies>
    
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.8.10</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>${spring-boot.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring-cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>17</source>
                        <target>17</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    
    </project>
    
  2. mvn clean install

  3. 项目加 parent 继承它,清理父pom提供的依赖,刷新启动

公共代码

package com.woniuxy.mall131.common.result;

public interface Messagable {
    /**
     * 获取结果码
     * @return
     */
    String getCode();
    /**
     * 获取结果信息
     * @return
     */
    String getMessage();

}
package com.woniuxy.mall131.common.result;

public enum CommonResultCode implements Messagable {
    SUCCESS("SUCCESS", "操作成功"),
    FAIL("FAIL", "操作失败"),
    PARAM_ERROR("PARAM_ERROR", "参数错误"),
    INVALID_STATE("INVALID_STATE", "非法状态")
    ;


    private String code;
    private String message;
    CommonResultCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
    public String getCode() {
        return code;
    }
    public String getMessage() {
        return message;
    }

    @Override
    public String toString() {
        return this.code + ":" + this.message;
    }
}
package com.woniuxy.mall131.common.result;

public class Result<T> {
    private String code;
    private String message;
    private T data;
    private boolean success;

    public Result() {
    }

    public Result(boolean success, String code, String message, T data) {
        this.success=success;
        this.code = code;
        this.message = message;
        this.data = data;
    }


    public static <T> Result<T> success(T data) {
        return new Result<>(true, CommonResultCode.SUCCESS.getCode(), CommonResultCode.SUCCESS.getMessage(), data);

    }

    public static <T> Result<T> success() {
        return success(null);
    }


    public static <T> Result<T> fail(String code, String message) {
        return new Result<>(false,code, message, null);
    }

    public static <T> Result<T> fail(Messagable resultCode) {
        return fail(resultCode.getCode(), resultCode.getMessage());
    }

    public static <T> Result<T> fail() {
        return fail(CommonResultCode.FAIL);
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    @Override
    public String toString() {
        return "Result{" +
        "code='" + code + '\'' +
        ", message='" + message + '\'' +
        ", data=" + data +
        ", success=" + success +
        '}';
    }
}
package com.woniuxy.mall131.common.exception;

import com.woniuxy.mall131.common.result.Messagable;

public class MallException extends RuntimeException{
    private String code;

    public MallException(Messagable messagable) {
        super(messagable.getMessage());
        this.code = messagable.getCode();
    }

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

    public MallException(String message, Throwable cause, String code) {
        super(message, cause);
        this.code = code;
    }

    public MallException(Throwable cause, String code) {
        super(cause);
        this.code = code;
    }

    public MallException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, String code) {
        super(message, cause, enableSuppression, writableStackTrace);
        this.code = code;
    }
}

共享接口

image-mzdb.png

  1. 拆分接口与实现

    image-LPIh.png

    image-Fkbe.png

    1. 生成项目

      1. 重新导包 (result\messagable)
    2. 将代码迁移

      1. userBalanceClient -> client
      2. apiImpl -> app
      3. serverice -> service
      4. mapper/entity /mapper.xml -> infra (重新导包)
      5. 修改配置
    3. mvn clean install(外层)

    4. mainsite中引入依赖,修改

      @EnableFeignClients(basePackages = "com.woniuxy.mall131.*.client")
      
  2. 修改代码,测试