我们首先先构建父工程,这里使用的是maven项目,用spring快速项目进行构建。 注意:这里选择jdk11演示,自己也可以用其他版本如1.8
注意: 如果报错,记得去配置maven仓库,最好在配置以下编码格式哦! 如果会新项目默认配置的朋友可以忽略这一步~
既然能看到这里,一定是有基础的,就不做过多解释,看序号就可以,只是要注意: 配置完成要点击apply和OK 不然无效哦!
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- springboot的依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<groupId>com.libin</groupId>
<artifactId>mcroservice</artifactId>
<!-- 首先修改打包方式 -->
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>mcroservice</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<mysql.version>5.1.47</mysql.version>
<druid.version>1.1.10</druid.version>
<junit.version>4.1.2</junit.version>
<lombok.version>1.16.10</lombok.version>
<log4j.vsrsion>1.2.17</log4j.vsrsion>
</properties>
<!-- 因为是总项目 所以用dependencyManagement来管理 因为其他的子项目就不会来管理版本了了 可以直接引用 -->
<dependencyManagement>
<dependencies>
<!-- springcloud的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</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>
<!-- springboot启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!-- log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.vsrsion}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
注意:这是父项目,用不到src目录的内容,直接删掉即可,不删掉会报错
我们此时父工程就搭建完成了,就是这么简单。
接下来,我们就可以进行继续搭建其他的微服务工程了。我们首先搭建一个专门放我们实体类的服务,来让其他服务来调用。
选中我们的父工程点击New,在点击Module,如下图:
填写我们的Module的项目名称。注意下面这是Module name处用将我们项目名的-省略,因为实际项目中有更多的工程,我们为了方便看的更清楚,需要加-来进行分割!
注意:这个微服务模块不需要入口类,直接删掉入口类即可,以及测试的默认文件
此时我们的第一个微服务工程就建立完成了,接下来就是配置啦。我们首先配置POM.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 在这里配置继承的父项目的poM -->
<parent>
<groupId>com.libin</groupId>
<artifactId>mcroservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>cloud_api_commons</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud_api_commons</name>
<description>Demo project for Spring Boot</description>
<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>
</project>
注意:这里我们引入了Hutool这个jar包,它是一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类更多相信信息可参考: 一个超神级框架——Hutool工具类应有尽有!
这是我们就可以在该服务中写的pojo类,我们这里以支付为例,所以我们先在数据中建议一张支付的表。sql语句如下
CREATE TABLE `payment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`serial` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我们为该表添加数据,sql语句如下:
```powershell
insert into `payment`(`id`,`serial`) values (1,'百度'),(2,'alibaba'),(3,'京东'),(4,'小米');
IDEA 逆向工程生成实体类策略可参考: IDEA 2021 配置Data Sources 建表和添加数据完成了,我们就新建对应的实体类。下图为项目结构图:
注意:payment表对应的实体类。这里使用了lombok
Payment实体类源码:
package com.libin.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* (Payment)实体类
*网络通信 一定要实现序列化
* 使用lombok 没有配置的朋友要去百度查一下 jar我们导入了 需要在idea装一个插件就可以了
* @author libin
* @since 2021-06-20 13:51:22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Payment implements Serializable {
private static final long serialVersionUID = 613241275635502144L;
/**
* ID
*/
private Long id;
/**
* 微服务 一个服务对应一个数据库,同一个信息可能存在不同的数据库
*/
private String serial;
}
为了数据传输的方便,也为了前后端分离项目,我们将返回的数据进行封装,封装成一个实体类。
package com.libin.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* @author libin
* @date 2021年06月20日 13:56
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class CommonResult<T> {
/**
*
* @author libin
* @date 2021/6/20 13:57
*
*返回状态码
*/
private Integer code;
/**
*
* @author libin
* @date 2021/6/20 13:57
* @返回是否调用成功
*
*/
private String message;
/**
*
* @author libin
* @date 2021/6/20 13:57
* 返回的数据
*/
private T data;
public CommonResult(Integer code, String message) {
this(code, message, null);
}
}
我们实体类的服务主要存放实体类,也不写业务逻辑,我们也可以将src文件夹删除掉。此时我们就将总工程和提供实体类的微服务工程搭建成功了。因为实体类的服务工程需要其他的各个服务工程调用,所以要将实体类的服务进行打包放到公用的本地库中。
我们首先将该工程clean,确保当前工程的maven的配置是否成功。
出现如下界面说明当前工程的maven配置环境没有问题
那接下来我们就开始install打包放到本地库中。如下为成功界面:
D:\Java\jdk_11_windows_x64\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\project\SpringCloud\mcroservice -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -DarchetypeCatalog=local -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.home=D:\Java\apache_maven_3_8_1 -Dclassworlds.conf=D:\Java\apache_maven_3_8_1\bin\m2.conf "-Dmaven.ext.class.path=D:\Java\IntelliJ_IDEA\IntelliJ IDEA 2021.1.2\plugins\maven\lib\maven-event-listener.jar" "-javaagent:D:\Java\IntelliJ_IDEA\IntelliJ IDEA 2021.1.2\lib\idea_rt.jar=3762:D:\Java\IntelliJ_IDEA\IntelliJ IDEA 2021.1.2\bin" -classpath D:\Java\apache_maven_3_8_1\boot\plexus-classworlds-2.6.0.jar;D:\Java\apache_maven_3_8_1\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2021.1.2 -s D:\Java\apache_maven_3_8_1\conf\settings.xml -Dmaven.repo.local=D:\Java\MavenRepository install
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.libin:cloud_api_commons >---------------------
[INFO] Building cloud_api_commons 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ cloud_api_commons ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ cloud_api_commons ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to D:\project\SpringCloud\mcroservice\cloud_api_commons\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ cloud_api_commons ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\project\SpringCloud\mcroservice\cloud_api_commons\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ cloud_api_commons ---
[INFO] Changes detected - recompiling the module!
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ cloud_api_commons ---
[INFO]
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ cloud_api_commons ---
[INFO] Building jar: D:\project\SpringCloud\mcroservice\cloud_api_commons\target\cloud_api_commons-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ cloud_api_commons ---
[INFO] Installing D:\project\SpringCloud\mcroservice\cloud_api_commons\target\cloud_api_commons-0.0.1-SNAPSHOT.jar to D:\Java\MavenRepository\com\libin\cloud_api_commons\0.0.1-SNAPSHOT\cloud_api_commons-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\project\SpringCloud\mcroservice\cloud_api_commons\pom.xml to D:\Java\MavenRepository\com\libin\cloud_api_commons\0.0.1-SNAPSHOT\cloud_api_commons-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.171 s
[INFO] Finished at: 2021-06-20T14:17:06+08:00
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
这一篇就写到这里咯~