我们要实现的功能是:订单-支付模块微服务,然后将各个组件的技术逐个加进去。
我们遵循的原则是:约定>配置>编码。
1、IDEA新建Project工作空间
1-1、微服务Spring Cloud整体聚合父工程
新建Maven项目,选择org.apache.maven.archetypes:maven-archetype-site,GroupId为com.king.springcloud,ArtifactId为cloud2020,指定自己的Maven,不要使用IDEA内置的。
修改项目的默认编码为UTF-8:Settings→Editor→File Encodings,将Global Encoding,Project Encoding,Default encoding for properties files都指定UTF-8,勾选“Transparent native-to-ascii conversion”,Create UTF-8 files选择“with NO BOM”。
注解生效激活:Settings→Build,Execution,Deployment→Compiler→Annotation Processors,勾选“Enable annotation processing”。
修改Java编译版本:Settings→Build,Execution,Deployment→Java Compiler,修改Target bytecode version为8。
文件过滤:Settings→Editor→File Types,在最下面添加*.idea;*.iml;,将某些文件和目录过滤掉。
1-2、父工程pom
修改pom.xml
的打包方式改为pom
,删掉父工程的src目录
,项目里只保留一个pom.xml
文件。
父工程的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>
<groupId>com.king.springcloud</groupId>
<artifactId>cloud2020</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 指定父级工程 -->
<packaging>pom</packaging>
<!-- 统一管理jar包版本 -->
<properties>
<!-- 指定项目统一编码格式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 指定项目Java源码版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<!-- 指定项目打包后的Java源码版本 -->
<maven.compiler.target>1.8</maven.compiler.target>
<!-- 指定单元测试依赖版本 -->
<junit.version>4.12</junit.version>
<!-- 指定日志依赖版本 -->
<log4j.version>1.2.17</log4j.version>
<!-- 指定以简单注解形式来简化java代码的Lombok版本 -->
<lombok.version>1.18.20</lombok.version>
<!-- 指定mysql依赖版本 -->
<mysql.version>5.1.47</mysql.version>
<!-- 指定druid数据库连接池版本 -->
<druid.version>1.2.4</druid.version>
<!-- 指定spring boot集成druid版本 -->
<druid.spring.boot.starter.version>1.2.4</druid.spring.boot.starter.version>
<!-- mybatis跟spring boot整合的版本 -->
<mybatis-spring-boot.version>2.1.4</mybatis-spring-boot.version>
</properties>
<!-- dependencyManagement一般作用以父工程只是声明依赖,并不实现引入,子模块的dependencies下面才是真实引入。子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement>
<dependencies>
<!-- spring boot 2.2.2 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud Hoxton.SR1 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud alibaba 2.1.0.RELEASE 依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- mysql依赖 -->
<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集成druid框架 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.spring.boot.starter.version}</version>
</dependency>
<!-- SpringBoot集成mybatis框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<!-- 单元测试依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- 日志依赖 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- lombok依赖 -->
<dependency>