3、Spring Cloud Rest工程创建(通过IDEA创建)
1.Rest微服务构建简介
(1).介绍
以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务。
(2).Mybatis
|
https://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="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"> <modelVersion>4.0.0modelVersion>
<groupId>com.hosystemgroupId> <artifactId>microservicecloudartifactId> <version>1.0-SNAPSHOTversion> <packaging>pompackaging>
<properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <maven.compiler.source>1.8maven.compiler.source> <maven.compiler.target>1.8maven.compiler.target> <junit.version>4.12junit.version> <log4j.version>1.2.17log4j.version> <lombok.version>1.16.18lombok.version> properties>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-dependenciesartifactId> <version>Dalston.SR1version> <type>pomtype> <scope>importscope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-dependenciesartifactId> <version>1.5.9.RELEASEversion> <type>pomtype> <scope>importscope> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.0.4version> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> <version>1.0.31version> dependency> <dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> <version>1.3.0version> dependency> <dependency> <groupId>ch.qos.logbackgroupId> <artifactId>logback-coreartifactId> <version>1.2.3version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>${junit.version}version> <scope>testscope> dependency> <dependency> <groupId>log4jgroupId> <artifactId>log4jartifactId> <version>${log4j.version}version> dependency> dependencies> dependencyManagement>
project> |
|
#创建子工程microservicecloud-api之后 pom会发生变化
<groupId>com.hosystemgroupId> <artifactId>microservicecloudartifactId> <version>1.0-SNAPSHOTversion> <packaging>pompackaging>
<modules> <module>microservicecloud-apimodule> modules> |
(2).microservicecloud-api
公共子模块Module;new->Module
[1].创建microservicecloud-api工程
创建完成后请回到父工程查看pom文件变化
[2].导入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>microservicecloudartifactId> <groupId>com.hosystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion>
<artifactId>microservicecloud-apiartifactId>
<dependencies> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> 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) 类表关系映射 https://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="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>microservicecloudartifactId> <groupId>com.hosystemgroupId> <version>1.0-SNAPSHOTversion> parent> <modelVersion>4.0.0modelVersion>
<artifactId>microservicecloud-provider-dept-8001artifactId>
<dependencies> <dependency> <groupId>com.hosystemgroupId> <artifactId>microservicecloud-apiartifactId> <version>${project.version}version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> dependency> <dependency> <groupId>ch.qos.logbackgroupId> <artifactId>logback-coreartifactId> dependency> <dependency> <groupId>org.mybatis.spring.bootgroupId> <artifactId>mybatis-spring-boot-starterartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-jettyartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> dependency>
<dependency> <groupId>org.springframeworkgroupId> <artifactId>springloadedartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-devtoolsartifactId> 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" ?> configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings> <setting name="cacheEnabled" value="true" |