父工程构建
创建父工程
创建Maven工程
设置编码
设置注解激活生效
设置编译版本
过滤FileTpye设置,在目录中隐藏文件
这样目录看着就很舒服
父工程POM文件
- 父工程只是做依赖管理
所以packing方式为pom,并且不需要编写代码,将src文件夹删除
- 统一管理jar包版本
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties>
添加依赖
<!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version --><dependencyManagement><dependencies><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud alibaba 2.1.0.RELEASE--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency></dependencies></dependencyManagement>
dependencyManagement和dependencies
- Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。
- 使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个dependencyManagement 元素中指定的版本号。
- dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖(子项目通过
<dependence>引入)。 - 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
- 跳过单元测试

- 至此,父项目就搭建完成了。通过Maven的clean、install就可以生成包给子项目引入
微服务工程构建
- 总体模块

80端口作为客户端模块
8001端口作为微服务提供者模块
微服务提供者模块
步骤
- 建Module
- 修改pom文件
- 编写配置文件
- 编写模块主程序
- 编写业务类
- 建Module
建立Maven项目即可,注意JDK版本的选择
选择父工程以及模块名
此时的结构
同时,父工程的pom文件自动新增了module
- 修改pom文件

同时可以看到引入的依赖中,有的版本号没有写,是因为使用的父工程中的版本号。
父工程中没有的模块,子工程还是需要些的
<!--引入的依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!--mysql-connector-java--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
- 编写配置文件
server:port: 8001spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://101.35.238.236:3306/springcloud?useUnicode=true&characterEncoding=utf-8&useSSL=falseusername:password:mybatis:mapper-locations: classpath:mapper/*.xml # 扫描Mapper的路径为类路径下mapper文件夹下的所有.xml文件type-aliases-package: top.chasingwind.springcloud.entities # Entity所在包
- 编写模块主程序

编写业务类
- 创建表
``mysql CREATE TABLEpayment` (
idbigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,serialvarchar(200) DEFAULT ‘’,PRIMARY KEY (
id)- 创建表
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
2.创建实体类> > > 定义通用返回实体类> 3.创建Dao接口> 4.创建Dao映射文件xml文件> 注意需要和配置文件中的路径对应> 5.Service层> 6.Controller层> 7.启动测试> 直接运行模块的SpringBoot启动类启动> create> > getById> <a name="7c759483"></a>### 客户端消费者模块-客户端只需要调用服务端的功能即可,所以只需要实现Controller-建立Module> -修改pom文件```xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
- 编写配置文件
可以通过HTTP地址(即常说的“网址”)加“: 80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了。
- 编写模块主程序

编写业务类
- 实体类

- 实体类
Controller层实现调用微服务模块—RestTemplate
客户端要调用微服务提供者,由于是两个模块。客户端并不能直接通过注入Bean的方式调用到微服务提供者。
借助RestTemplate调用远程Http服务
RestTemplate提供了多种便捷访问远程Http服务的方法, 是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集
使用配置类将RestTemplate注入到IOC容器中

- 实现Controller层

- 测试

工程重构
- 上面的模块存在的问题
entities中的实体类在两个模块中都存在,并且是一模一样的,这样会导致冗余
将各个模块中重复的部分提取出来,作为一个新的模块被其他模块引用
- 创建新模块

- 创建新模块
- 修改pom文件
中间还可以引入各个模块通用的依赖,比如hutool工具包
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.1.0</version></dependency></dependencies>
由于此模块是被其他模块进行引用,所以不需要配置文件和主程序类
将各个模块重复的部分放到此模块中

Maven clean install确保可以正常打包
微服务提供者和客户端进行引入
在各自模块中引入公共模块,然后删除各自模块中的entities包
<!-- 引入自己定义的api通用包,可以使用Payment支付Entity --><dependency><groupId>top.chasingwind</groupId><artifactId>cloud-api-commons</artifactId><version>${project.version}</version></dependency>
- 测试
正常使用
















