微服务架构搭建
搭建微服务架构
首先搭建系统管理模块,模块结构如下
tps-cloud
└── tps-system -- 系统管理模块
└── tps-system-api -- 系统管理模块公共api模块
└── tps-system-biz -- 系统管理模块业务处理模块[9001]
1.新建Project
① 选择 File -> New -> Project菜单,如下图所示:
② 选择 Gradle类型,输入名字为 tps-cloud,并点击 Next按钮,如下图所示:
③ 选择当前稳定的Spring Boot 3.3.1版本,点击Create
④打开 项目tps-cloud,删除 src 文件夹,然后右击tps-cloud项目创建tps-system模块,如下图所示:
填写模块名称,选择Gradle
⑤删除tps-system的src文件夹,并在tps-system模块下新建 tps-system-api 与tps-system-biz模块 ,整个过程和“新建tps-system模块”是一致的,如下图所示:
⑥ 服务创建完成后,整体代码结构
⑦ 点击IDEA右边的Gradle,可以看到项目之间不是父子结构,所以需要调整项目依赖关系
⑧ 修改tps-cloud项目下settings.gradle文件,通过include命令,删除所有子模块的settings.gradle文件,一个项目该文件只需要一个就行。
rootProject.name = 'tps-cloud'
//系统模块
include 'tps-system'
//系统模块下子模块
include 'tps-system:tps-system-api'
include 'tps-system:tps-system-biz'
分析一下项目的build.gradle
#
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5'
}
group = 'com.tps.cloud'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
plugins(插件)
Gradle 插件的作用,主要有以下几个方面:
- 添加任务到项目中,可对项目进行测试、编译、打包;
- 添加依赖到项目中,可用来配置项目构建过程中需要的依赖;
- 可以向项目中现有的对象类型添加新的扩展属性、方法等,可方便项目的配置和构建优化,比如 Android 项目构建中的 android{}就是 Android Gradle 插件为 Project 对象添加的一个扩展;
- 可以对项目进行一些约定,如使用 Java Gradle插件可以约定 src/main/java 目录下源代码的存放位置,在编译的时候就可以编译指定目录下的 Java 源代码文件。
repositories (仓库)
Gradle默认使用Maven的中心库下载依赖包;
如果从中心库下载jar包的速度慢,我们可以通过阿里云或者腾讯云的Maven库镜像来加速,当然也可以使用你公司内部的Maven库私服来加速。
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
dependecies(依赖)
我们只需要按照下面的格式即可引入依赖:
implementation group: '***', name: '***', version: '***'
或简写成:
implementation 'group:name:version'
因为插件,只要被Spring Boot所管理的依赖,版本也无须维护,可以更加精简的写成:
implementation 'group:name'
如果你想找某个依赖包,可以通过https://mvnrepository.com/查找添加依赖
一般情况下,我们会把复制来的版本号给去掉,以防Spring Boot已经对它做了版本管理,这样我们就能直接下载兼容性良好的依赖包;如果去掉版本后不能下载依赖包,意味着Spring Boot没有做该包的版本管理,这时我们按照自己的需要添加合适的版本号。
下面看看其他几个依赖的关键字,一般情况下我们不需要过多的关注。
测试依赖:testImplementation,测试相关的依赖,使用testImplementation,规则和普通依赖一致。
dependencies {
//...
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
编译依赖:compileOnly,只在编译期起效的依赖。
dependencies {
//...
compileOnly 'org.projectlombok:lombok'
//...
}
运行时依赖:runtimeOnly,只在运行时起效的依赖。
dependencies {
//...
runtimeOnly 'com.mysql:mysql-connector-j'
//...
}
添加Demo接口
① 在 com.tps.cloud.system包,新建一个 DemoController 类,并新建一个 /demo/get 接口。代码如下:
package com.tps.cloud.system.controller;
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/get")
public String get() {
return "恭喜你,你的接口通了!";
}
}
② 上面代码肯定是报错,因为很多注解我们并没有引入相对应的Spring启动器,通过IDEA快捷键,可以查看IDEA建议我们引入spring-boot-starter-web
③ 在模块tps-system-biz下的build.gradle文件添加spring-boot-starter-web依赖,然后Gradle reload一下,Gradle会去下载依赖包
④ 现在我们可以引入相关依赖包,通过错误提示
引入相关类
package com.tps.cloud.system.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/get")
public String get() {
return "恭喜你,你的接口通了!";
}
}
⑤ 将tps-system-biz服务运行起来,默认接口是8080
通过Postman或者Apifox调用接口http://localhost:8080/demo/get,查看返回结果。
现在我们已经成功启动一个微服务,并且调通 一个RESTful API 接口,当然这个接口目前的功能很简单,下一章我们将数据库集成进来,做一个表的增删改查功能