先说下版本对应关系,官方文档里倒是提到了springboot、springcloud、springcloudalibaba之间的对应关系,但是文档存在更新不及时问题。因此,版本对应关系,可以直接使用提供的脚手架。
脚手架生成服务
脚手架生成配置截图

一、SpringCloudGateway
创建一个空Maven项目,pom.xml中添加如下内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.6.13</spring-boot.version> <spring-cloud.version>2021.0.5</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <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>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
|
配置示例application.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| server: port: 80 spring: cloud: gateway: routes: - id: test predicates: - Path=/data/** filters: - StripPrefix=1 - RewritePath=/(?<segment>.*), /api/${segment} uri: http://127.0.0.1:8080 - id: name predicates: - Path=/** filters: - RewritePath=/(?<segment>.*), /root/${segment} uri: http://127.0.0.1:8080
|
参考文档
直接上源码
二、Nacos配置管理与服务发现
2.1 Nacos编译与使用
了解Nacos可以直接阅读官方文档
使用Nacos,我们需要有Nacos-Server,此处就不使用官方提供的release版本了,而是自己编译,因为本来就是Java开发的,所以对于Javaer来说也没啥难度!
1 2 3 4
| git clone https://github.com/alibaba/nacos.git cd nacos git checkout 2.2.4 mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
|
只需要四行命令,即可实现编译,要求编译时有网络环境。

之后,进入到distribution/target
,即可获取压缩包。

解压后,进入bin目录,执行命令启动nacos服务即可
1
| startup.cmd -m standalone
|
2.2 实现动态数据源切换
创建项目时,需要添加配置管理依赖和服务发现依赖。

“Talk is cheap. Show me the code.”,直接上源码
核心在于@RefreshScope
这个注解,被该注解标识后,表示这个Bean在运行时是可刷新的。并且所有基于该Bean的依赖也会被刷新,这些复杂的工作都是springcloud做的,开发者不需要关心。
整体流程如图所示

至于Nacos如何配置,参照Nacos 融合 Spring Cloud,成为注册配置中心 | Nacos
展示一下最后的成果。

参考