3、Spring Cloud Rest工程创建(通过IDEA创建)
- 2020 年 12 月 5 日
- 筆記
- SpringCloud
1.Rest微服务构建简介
(1).介绍
以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务。
(2).Mybatis
//www.cnblogs.com/HOsystem/category/1781871.html |
(3).Maven
一个简单的Maven模块结构是这样的: —- app-parent 一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web) |—- pom.xml (pom) | |——– app-util | |——– pom.xml (jar) | |——– app-dao | |——– pom.xml (jar) | |——– app-service | |——– pom.xml (jar) | |——– app-web |——– pom.xml (war) |
一个Project带着多个Module子模块。
MicroServiceCloud父工程(Project)下初次带着3个子模块(Module)。
[1].microservicecloud-api
封装的整体entity/接口/公共配置等
[2].microservicecloud-provider-dept-8001
微服务落地的服务提供者
[3].microservicecloud-consumer-dept-80
微服务调用的客户端使用;80端口
80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的 此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。 可以通过HTTP地址(即常说的”网址”)加”:80″来访问网站, 因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入”:80″了。 |
2.SpringCloud版本
3.Rest工程构建
约定>配置>编码
(1).microservicecloud整体父工程Project
父工程microservicecloud,切记是Packageing是pom模式
[1].创建microservicecloud工程
IDEA中创建Maven父工程的时候不需要勾选’Create from archetype’
[2].配置pom文件
<?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”//maven.apache.org/POM/4.0.0″ xmlns:xsi=”//www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion>
<groupId>com.hosystem</groupId> <artifactId>microservicecloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging>
<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> </properties>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies> </dependencyManagement>
</project> |
#创建子工程microservicecloud-api之后 pom会发生变化
<groupId>com.hosystem</groupId> <artifactId>microservicecloud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <!–注:modules最开始创建的时候是不存在的,只有创建子工程的时候才会出现–> <modules> <module>microservicecloud-api</module> </modules> |
(2).microservicecloud-api
公共子模块Module;new->Module
[1].创建microservicecloud-api工程
创建完成后请回到父工程查看pom文件变化
[2].导入pom
<?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”//maven.apache.org/POM/4.0.0″ xmlns:xsi=”//www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd”> <!– 子类里面显示声明才能有明确的继承表现,无意外就是父类的默认版本否则自己定义 –> <parent> <artifactId>microservicecloud</artifactId> <groupId>com.hosystem</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion>
<!–当前Module叫什么名字 –> <artifactId>microservicecloud-api</artifactId>
<!– 当前Module需要用到的jar包,按自己需求添加,如果父类已经包含了,可以不用写版本号 –> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
</project> |
[3].新建Entity
新建部门Entity且配合lombok使用。
package com.hosystem.springcloud.entities;
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors;
import java.io.Serializable;
@SuppressWarnings(“serial”) @AllArgsConstructor @NoArgsConstructor @Data @Accessors(chain = true) //Entity orm mysql->Dept(table) 类表关系映射 //baike.baidu.com/item/%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB%E6%98%A0%E5%B0%84/311152?fromtitle=ORM&fromid=3583252&fr=aladdin public class Dept implements Serializable{ //必须序列化 private Long deptno; //主键 private String dname; //部门名称 private String db_source;//来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库
public Dept(String dname) { this.dname = dname; }
} |
[4].mvn clean和mvn install
mvn clean install后给其它模块引用,达到通用目的。即需要用到部门实体的话,不用每个工程都定义一份,直接引用本模块即可。
(3).microservicecloud-provider-dept-8001
部门微服务提供者Module
[1].创建工程
[2].配置pom文件
<?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”//maven.apache.org/POM/4.0.0″ xmlns:xsi=”//www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd”> <parent> <artifactId>microservicecloud</artifactId> <groupId>com.hosystem</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion>
<artifactId>microservicecloud-provider-dept-8001</artifactId>
<dependencies> <dependency><!– 引入自己定义的api通用包,可以使用Dept部门Entity –> <groupId>com.hosystem</groupId> <artifactId>microservicecloud-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <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.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
</project> |
[3].配置applicaiton.yml文件
server: port: 8001
mybatis: config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径 type-aliases-package: com.hosytem.springcloud.entities # 所有Entity别名类所在包 mapper-locations: – classpath:mybatis/mapper/**/*.xml # mapper映射文件
#name spring.application.name=microservicecloud-dept 很重要很重要很重要 spring: application: name: microservicecloud-dept datasource: type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包 url: jdbc:mysql://192.168.188.188:3306/cloudDB01 # 数据库名称 username: root password: 123456 dbcp2: min-idle: 5 # 数据库连接池的最小维持连接数 initial-size: 5 # 初始化连接数 max-total: 5 # 最大连接数 max-wait-millis: 200 # 等待连接获取的最大超时时间 |
[4].配置mybatis.cfg.xml文件
microservicecloud-provider-dept-8001\src\main\resources\mybatis\mybatis.cfg.xml
<?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “//mybatis.org/dtd/mybatis-3-config.dtd”>
<configuration>
<settings> <setting name=”cacheEnabled” value=”true”<!– 二级缓存开启 –> |