一、总体介绍
使用 Maven 的分包分模块结构:
1、一个 Project 带多个Module 子模块;
2、MicroServiceCloud 父工程(Project)下初次带着3个子模块(Module)
(1)、microservicecloud-api 封装的整体entity / 接口 / 公共配置等;
(2)、microservicecloud-provider-dept-8001 微服务落地的服务提供者
(3)、microservicecloud-provider-dept-80 微服务调用的客户端使用(端口80)
二、本次使用的springcloud的版本
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
springboot (2.0.2) 、 springcloud (Finchley.RELEASE)
参考工程 servicespringcloud-v3:https://github.com/ll996960921/springcloud-01
三、构建步骤
1、构建 microservicecloud 整体父工程 Project
新建工程 microservicecloud ,切记 Packageing 是 pom 模式
主要是定义 pom 文件,将后续各个子模块公用的 jar 包统一提出来,类似一个抽象父类
(1)、pom文件
<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>cn.smilexl.springcloud</groupId>
<artifactId>microservicecloud</artifactId>
<version>0.0.1-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>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.2.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>
2、构建 microservicecloud-api 公共子模块 Module
约定 > 配置 > 编码
<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.smilexl.springcloud</groupId>
<artifactId>servicespringcloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<!-- 当前Module我自己叫什么名字 -->
<artifactId>servicespringcloud-api</artifactId>
<!-- 当前Module需要用到的jar包,按自己需求添加,如果父类已经包含了,可以不用写版本号 -->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
(1)、新建部门Entity配合lombok使用(Dept.java)
package cn.smilexl.springcloud.entities;
import java.io.Serializable;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @ClassName: Dept
* @Description: TODO 部门实体类
*/
@SuppressWarnings("serial") //压制警告
@NoArgsConstructor //无参构造方法
@Data // setter、getter 方法
@Accessors(chain=true) //链式结构
public class Dept implements Serializable { //必须实现序列化
private Long deptno; //主键
private String dname;// 部门名称
private String db_source; //来自哪个数据库,每个微服务对应一个数据库
}
通过 mvn clean install 给其它模块引用,达到通用目的;即,需要用的部门实体的话,不用每个工程都定义一份,直接引用本模块即可。
网友评论