1. 微服务项目创建
1.1 工程结构
GitCGB2105IVProjects (工作区/空项目)
├── 01-sca //(微服务父工程)
├── sca-provider //服务提供方法
├── sca-consumer //服务消费方法
├── sca-gateway //网关服务
1.2 创建空项目
1.3 项目初始化配置
-
配置Maven环境
注意本地库选择新的位置不要与其它项目共用本地库
-
配置JDK编译环境
Java 编译器版本
-
配置项目编码字符集
1.4 创建聚合父工程
-
创建Maven项目
-
删除父工程的src
-
添加核心依赖和版本管理
<?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.jt</groupId>
<artifactId>01-sca</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- 创建此工程的子工程时,默认会创建这个元素,
在这个元素内部会定义,当前项目下的一些模块,
当对父工程进行编译,打包时,会对modules元素
内部定义的子工程进行同样的编译和打包
-->
<modules>
<module>sca-provider</module>
<module>sca-consumer</module>
<module>sca-gateway</module>
<module>sca-common</module>
</modules>
<!--
maven父工程的pom文件中一般要定义子模块(modules),子工程中所需依赖版本的管理,公共依赖
父工程的打包方式一般为pom方式
-->
<!-- 第一步:定义子工程中核心依赖的版本 -->
<dependencyManagement>
<dependencies>
<!--Spring Boot 依赖(此依赖中定义了springboot工程核心依赖的版本)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.2.RELEASE</version>
<scope>import</scope>
<type>pom</type> <!--只有类型为pom的才可以import-->
</dependency>
<!--Spring Cloud 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<!--Spring Cloud Alibaba依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 第二步:添加子工程的所需要的公共依赖 -->
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!--provided表示只在编译阶段有效运行阶段无效-->
<scope>provided</scope>
</dependency>
<!-- 单元测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 第三步:定义当前工程模块及子工程的统一编译版本 -->
<build> <!-- 项目构建配置,基于maven完成项目的编译,测试,打包等操作,
都是基于pom.xml完成这一系列的操作,但是编译和打包的配置都是要写道build元素内的,
而具体的编译和打包配置,又需要plugin去实现,plugin元素不是必须的,maven有默认的plugin配置,
常用插件可取本地库进行查看 -->
<plugins>
<!-- 通过maven-compiler-plugin插件设置项目 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
常见bug分析
项目的pom.xml文件有删除线?(idea/setting/build…/maven/…/ignored Files)
作业
- 基于原有工程结构,在01-sca工程下创建sca-common工程
- 在 sca-provider 工程中引入 sca-common 工程依赖
- 在 sca-provider 工程中使用 sca-common 工程中的一些公共类(例如StringUtils.java)
- 检查自己电脑环境是否配置了JAVA_HOME环境变量?(cmd中输入命令 set JAVA_HOME)
- 检查自己电脑环境中的JVM虚拟机是否为64位的(java -version)
- 检查自己电脑环境中 mysql 的版本是否为5.7以上?(假如时MariaDB,建议10.5以上)
- 预习Nacos服务注册中心相关内容
-
在 sca-provider 工程中使用 sca-common 工程中的一些公共类(例如StringUtils.java)
sca-provider的pom.xml中引入common模块
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- provider工程依赖common工程,引用sca-common工程中的资源 -->
<dependency>
<groupId>com.jt</groupId>
<artifactId>sca-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
common的方法类
package com.jt.common;
public class StringUtils {
public static boolean isEmpty(String str) {
return str == null || "".equals(str);
}
}
provider的测试类
注意:Test类的包选择为"org.junit.jupiter.api.Test"
package com.jt.common;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @SpringBootTest 注解描述的功能为测试类
*/
@SpringBootTest
public class StringTests {
@Test
void testStringEmpty() {
String content = null;
boolean flag = StringUtils.isEmpty(content);
System.out.println(flag);
}
}
- 检查自己电脑环境是否配置了JAVA_HOME环境变量?(cmd中输入命令 set JAVA_HOME)