1. gateway:接入 nacos 配置中心,可支持动态路由

2. system-server:接入 nacos 配中心
This commit is contained in:
YunaiV 2022-06-04 23:50:46 +08:00
parent 93f4334eb6
commit 78c200ca61
13 changed files with 104 additions and 39 deletions

View File

@ -16,6 +16,12 @@
<url>https://github.com/YunaiV/yudao-cloud</url> <url>https://github.com/YunaiV/yudao-cloud</url>
<dependencies> <dependencies>
<!-- Spring Cloud 基础 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- 业务组件 --> <!-- 业务组件 -->
<dependency> <dependency>
<groupId>cn.iocoder.cloud</groupId> <groupId>cn.iocoder.cloud</groupId>
@ -46,6 +52,11 @@
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> </dependency>
<!-- Config 配置中心相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -2,12 +2,21 @@ package cn.iocoder.yudao.gateway;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
@SpringBootApplication @SpringBootApplication
public class GatewayServerApplication { public class GatewayServerApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(GatewayServerApplication.class, args); // SpringApplication.run(GatewayServerApplication.class, args);
// 启动 Spring Boot 应用
ConfigurableApplicationContext context = SpringApplication.run(GatewayServerApplication.class, args);
// 查看 Environment
Environment environment = context.getEnvironment();
System.out.println(environment);
} }
} }

View File

@ -0,0 +1,10 @@
/**
* Nacos 配置发生变化时Spring Cloud Alibaba Nacos Config 内置的监听器会监听到配置刷新最终触发 Gateway 的路由信息刷新
*
* 参见 https://www.iocoder.cn/Spring-Cloud/Spring-Cloud-Gateway/?yudao 博客的6. 基于配置中心 Nacos 实现动态路由小节
*
* 使用方式 Nacos 修改 DataId gateway-server.yaml 的配置修改 spring.cloud.gateway.routes 配置项
*
* @author 芋道源码
*/
package cn.iocoder.yudao.gateway.route.dynamic;

View File

@ -0,0 +1,4 @@
/**
* 占位符
*/
package cn.iocoder.yudao.gateway.route;

View File

@ -1,9 +1,2 @@
server: server:
port: 8888 port: 8888
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848

View File

@ -1,28 +1,14 @@
spring: spring:
application:
name: gateway-server
profiles:
active: local
cloud: cloud:
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类 # Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway: gateway:
# 路由配置项,对应 RouteDefinition 数组 # 路由配置项,对应 RouteDefinition 数组
routes: routes:
- id: yudaoyuanma # 路由的编号
uri: https://www.iocoder.cn # 路由到的目标地址
predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
- Path=/blog
filters:
- StripPrefix=1
- id: oschina # 路由的编号
uri: https://www.oschina.net # 路由的目标地址
predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
- Path=/oschina
filters: # 过滤器,对请求进行拦截,实现自定义的功能,对应 FilterDefinition 数组
- StripPrefix=1
- id: system-admin-api # 路由的编号 - id: system-admin-api # 路由的编号
uri: lb://system-server uri: lb://system-server
predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组 predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
- Path=/admin-api/system/** - Path=/admin-api/system/**
- id: system-app-api # 路由的编号
uri: lb://system-server
predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
- Path=/app-api/system/**

View File

@ -0,0 +1,21 @@
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
--- #################### 配置中心相关配置 ####################
spring:
cloud:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: # 使用的 Nacos 配置集的 dataId默认为 spring.application.name
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

View File

@ -0,0 +1,6 @@
spring:
application:
name: gateway-server
profiles:
active: local

View File

@ -18,6 +18,13 @@
</description> </description>
<dependencies> <dependencies>
<!-- Spring Cloud 基础 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- 依赖服务 -->
<dependency> <dependency>
<groupId>cn.iocoder.cloud</groupId> <groupId>cn.iocoder.cloud</groupId>
<artifactId>yudao-module-system-api</artifactId> <artifactId>yudao-module-system-api</artifactId>
@ -90,6 +97,10 @@
</dependency> </dependency>
<!-- Config 配置中心相关 --> <!-- Config 配置中心相关 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Job 定时任务相关 TODO 芋艿:暂时去掉 --> <!-- Job 定时任务相关 TODO 芋艿:暂时去掉 -->
<!-- <dependency>--> <!-- <dependency>-->

View File

@ -72,13 +72,6 @@ spring:
database: 0 # 数据库索引 database: 0 # 数据库索引
# password: 123456 # 密码,建议生产环境开启 # password: 123456 # 密码,建议生产环境开启
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
jasypt: jasypt:
encryptor: encryptor:
password: yuanma # 加解密的秘钥 password: yuanma # 加解密的秘钥

View File

@ -1,10 +1,4 @@
spring: spring:
application:
name: system-server
profiles:
active: local
main: main:
allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。 allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。

View File

@ -0,0 +1,21 @@
--- #################### 注册中心相关配置 ####################
spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
--- #################### 配置中心相关配置 ####################
spring:
cloud:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: # 使用的 Nacos 配置集的 dataId默认为 spring.application.name
file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

View File

@ -0,0 +1,6 @@
spring:
application:
name: system-server
profiles:
active: local