以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务
新建一个父工程:cloud,Packageing是pom模式
定义pom.xml文件,将各个子模块通用jar包统一提出来,类似一个抽象父类
<?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.0</modelVersion>
<groupId>com.gz.demo</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>cloud-api</module>
<module>cloud-provider-dept-8001</module>
</modules>
<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>
<java.version>1.8</java.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>
右键点击cloud父类工程新建module公共子模块cloud-api,入图:
创建完成之后在cloud父工程的pom里面添加
<modules>
<module>cloud-api</module>
</modules>
修改cloud-api公共子模块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.0</modelVersion>
<!--子类里面显示声明才能有明确的继承表现,无意外就是父类默认版本否则自定义-->
<parent>
<groupId>com.gz.demo</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!--当前Model叫什么名字-->
<artifactId>cloud-api</artifactId>
<!--当前Model需要用到的jar包,按自己需求添加,如果父类包含了,可以不用写版本号-->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.6.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
新建部门Entity且配合Lombok使用
Dept代码:
package com.gz.demo.cloud.cloudapi.entities;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@AllArgsConstructor//有参构造
@NoArgsConstructor//无参构造
@Data//get set方法
@Accessors(chain = true)//链式风格
public class Dept implements Serializable {//Serializable代码序列化(必须)
/**
* 主键
*/
private long depton;
/**
* 部门名称
*/
private String dname;
/**
* 来自哪个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同的数据库
*/
private String db_source;
/**
* 为了方便我们可以自己定义有参构造
* 也可以使用注解@AllArgsConstructor自动生成有参构造方法
* @param dname
*/
/*public Dept(String dname) {
super();
this.dname = dname;
}*/
}
创建完成之后clean编译 install 打成jar包
创建部门提供者cloud-provider-dept-8001
首先修改父类pom.xml
<modules>
<module>cloud-api</module>
<module>cloud-provider-dept-8001</module>
</modules>
在原来基础上加上
<module>cloud-provider-dept-8001</module>
修改cloud-provider-dept-8001的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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.gz.demo</groupId>
<artifactId>cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<artifactId>cloud-provider-dept-8001</artifactId>
<dependencies>
<dependency>
<groupId>com.gz.demo</groupId>
<artifactId>cloud-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>
</dependencies>
</project>
配置application.properties
#服务端口号
server.port=8001
#Mybatis配置
#定义Mapper的XML路径
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
#定义别名扫描的包,需要和@Alias联合使用,若不使用@Alias注解则会默认类名首字母小写
mybatis.type-aliases-package=com.gz.demo.cloud.cloudapi,entities
#配置开启驼峰匹配
mybatis.configuration.map-underscore-to-camel-case=true
spring.application.name=cloud-dept
#当前数据源操作类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#mysql驱动包
spring.datasource.driver-class-name=org.gjt.mm.mysql.Driver
#数据库名称
spring.datasource.url=jdbc:mysql://localhost:3306/cloudDB01
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=root
#数据库连接池最小维持连接数
spring.datasource.dbcp2.min-idle=5
#初始化连接数
spring.datasource.dbcp2.initial-size=5
#最大连接数
spring.datasource.dbcp2.max-total=5
#等待连接获取最大超时时间
spring.datasource.dbcp2.max-wait-millis=200