1 引言
我前面的博客《Spring Cloud2024.x实战 | 微服务全套系列 | 第1篇:springcloud整合注册/配置中心nacos、网关gateway》已经初步讲解了springcloud如何集成nacos注册/配置中心、gateway网关,但是有些朋友说还讲解的不够细致,因此下面再来讲解一个更加细致深入的版本。
2 搭建演示工程
示例代码对应仓库:
- 网关服务:
oso-gateway
- 认证中心:
oso-auth
本小节,我们使用 Gateway 提供的网关与 Spring Cloud alibaba nacos注册/配置中心的集成,从注册中心获取配置信息,从注册中心获取服务列表,并以服务名作为目标 URI 来自动创建动态路由。
2.1 搭建网关服务
创建oso-gateway
项目,作为网关中心。最终项目代码如下图所示:
2.1.1 引入依赖
在父pom.xml
文件中,主要引入 Spring Cloud微服务相关依赖。代码如下:
<?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.oso.mall</groupId>
<artifactId>oso-mall</artifactId>
<version>3.2.1</version>
<packaging>pom</packaging>
<modules>
<!-- 基础模块 -->
<module>oso-common</module>
<module>oso-gateway</module>
<module>oso-system</module>
<module>oso-auth</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<!-- spring cloud & alibaba -->
<spring.boot.version>3.4.4</spring.boot.version>
<spring.cloud.version>2024.0.1</spring.cloud.version>
<spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>
<!-- 工具 -->
<hutool.version>5.8.26</hutool.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!--Spring Cloud & Alibaba -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.oso.mall</groupId>
<artifactId>common-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.oso.mall</groupId>
<artifactId>common-web</artifactId>
<version>