依赖管理
-
新建一个文件夹,新建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> -
mvn clean install
-
项目加 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;
}
}
共享接口

-
拆分接口与实现


-
生成项目
- 重新导包 (result\messagable)
-
将代码迁移
- userBalanceClient -> client
- apiImpl -> app
- serverice -> service
- mapper/entity /mapper.xml -> infra (重新导包)
- 修改配置
-
mvn clean install(外层)
-
mainsite中引入依赖,修改
@EnableFeignClients(basePackages = "com.woniuxy.mall131.*.client")
-
-
修改代码,测试
评论