观察的问题
系统中有重复的部分,需要重构
重构思想
在cloud-consumer-order80中
,我们需要实体类,只需要将实体类放到该工程中即可,不需要加@Id @KeySql
注解,但是呢?我现在需要重构工程,需要将工程中实体类提取出来,这时候会遇到一个问题,提供者实体类需要加@Id @KeySql
注解,消费者实体类不需要加@Id @KeySql
注解,是不一样的
那该如何提取呢?答案是数据库实体类是提取不出来了,其实要硬生生的提取也是可以的,只是你在消费者的配置文件中需要引入数据库的配置,消费者是不需要连接数据库的,真正干活的是提供者
我们唯一能提取出来的是
- 统一返回结果类以及一些通用的依赖
开始重构
注意事项
lombok引入问题
lombok
依赖只能在当前工程中使用,(具体原因我也不知道),假如你在a工程的pom文件引入如下依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
你将a工程打包,提交到本地maven仓库中,然后你在b工程中想使用lombok
你直接就引入a项目的依赖,最后的结果lombok是不能使用,跟没有引进lombok一样,你需要在b工程中也引入lombok依赖,才可以使用
关于spring-boot-maven-plugin编译警告
需要在父工程的pom文件中指定其版本号
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
创建cloud-api-commons工程
这步想必大家都会了
注意创建的是一个maven工程即可,不需要添加启动类
该工程中存放统一返回结果和通用的依赖
改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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.sgy.cloud2020</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-api-commons</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
</dependencies>
</project>
目录结构
maven clean&install
将改工程进行clean和install,提交到本地maven仓库,以便其他的工程可以同意pom的形式进行引入
创建cloud-provider工程
该工程主要存放一些,提供者需要的工具类,以及提供者通用的pom依赖,比如tk.mapper和数据库连接相关的
该pom
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.sgy.cloud2020</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8090</artifactId>
<dependencies>
<dependency>
<groupId>com.sgy.cloud2020</groupId>
<artifactId>cloud-provider</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project>
目录结构
maven clean&install
将改工程进行clean和install,提交到本地maven仓库,以便其他的工程可以同意pom的形式进行引入
创建cloud-consumer工程
该工程用于存放消费者使用的工具类,和消费者使用通用pom依赖
改pom
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.sgy.cloud2020</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumer</artifactId>
<dependencies>
<dependency>
<groupId>com.sgy.cloud2020</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
maven clean&install
将改工程进行clean和install,提交到本地maven仓库,以便其他的工程可以同意pom的形式进行引入
修改cloud-provider-payment8090和cloud-consumer-order80
修改pom文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.sgy.cloud2020</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8090</artifactId>
<dependencies>
<dependency>
<groupId>com.sgy.cloud2020</groupId>
<artifactId>cloud-provider</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>com.sgy.cloud2020</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumer-order80</artifactId>
<dependencies>
<dependency>
<groupId>com.sgy.cloud2020</groupId>
<artifactId>cloud-consumer</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>