springcloud相关杂七杂八小总结
一. 注解-Annotation
1. @EnableDiscoveryClient
- @EnableDiscoveryClient不再需要
默认情况下,DiscoveryClient的实现将本地SpringBoot服务器自动注册到远程发现服务器。可以通过在@EnableDiscoveryClient中设置autoRegister=falsee来禁用此行为。
Spring Cloud将提供阻塞和反应式服务发现客户端。您可以通过设置spring.cloud.discovery.blocking.enabled=false
或spring.cloud.discovery.reactive.enabled=false
来轻松地禁用阻止和/或响应客户端。要完全禁用服务发现,您只需要设置spring.cloud.discovery.enabled=false
您可以在类路径上放置DiscoveryClient实现,以使Spring Boot应用程序在服务发现服务器上注册
批注:(具体从什么版本开始不再需要的,暂时没有查到具体的官方文档,现在知道的版本是spring-cloud-common-3.1.3及以上,org.springframework.cloud-2021.0.3及以上)
2. @RefreshScope
3. @EnableFeignClients
二. Nacos
1. 配置中心基础使用方法
- 引入依赖
<!-- Alibaba Nacos 配置 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${alibaba.nacos.version}</version>
</dependency>
- 创建一个bootstrap.yml, 并且添加配置(这里直接copy了ruoyi的)
# Spring
spring:
application:
# 应用名称
name: ruoyi-gateway
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- 需要给配置中心默认添加一个数据集(Data Id)具体dataId格式官网解释在 Nacos Spring Cloud 中,
dataId
的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
-
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。 -
spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
-
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
- 可以通过@RefreshScope注解实现动态配置
2. 作为配置中心-命名空间和配置分组
- 命令空间: 配置隔离(隔离方法可以按照开发环境隔离也可以使用模块隔离)
默认: public(保留空间): 默认新增的所有配置都在public空间
当新建命名空间之后需要配置spring.cloud.nacos.config.namespace: ${命名空间ID}
- 配置分组group:
当新建配置的时候如果没有选择默认的DEFAULT_GROUP作为分组的话, 那么需要将bootstarp.yml的配置中添加配置spring.cloud.nacos.config.group: ${Group}
- 对于大配置规则进行拆分: 可以根据功能或者模块进行拆分
拆分之后需要在bootstrap.yml中添加配置
spring:
cloud:
nacos:
config.ext-config[角标]:
data-id:${data id}
group:${group}
refresh:true 默认是false如果不修改为true的话那么修改之后不刷新
当然即使配置了这些拆分之后的话, 如果你默认的配置没有删除掉的话依然是会进行读取的
- 配置中心有则先使用配置中心中的
三. Gateway
1. GatewayFilter工厂
路由过滤器允许以某种方式修改传入的HTTP请求或传出的HTTP响应。路由过滤器的作用域为特定的路由。SpringCloud网关包括许多内置的GatewayFilter工厂。
- StripPrefix
spring:
cloud:
gateway:
routes:
- id: nameRoot
uri: https://nameservice
predicates:
- Path=/name/**
filters:
- StripPrefix=2
当通过gateway /name/blue/red
的网关发出请求时nameservice
实际请求服务的uri是 nameservice/red
.