观察的问题
系统中有重复的部分,需要重构

重构思想
  在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>
                    