springcloud相关杂七杂八小总结

一. 注解-Annotation

1. @EnableDiscoveryClient

  • @EnableDiscoveryClient不再需要
    默认情况下,DiscoveryClient的实现将本地SpringBoot服务器自动注册到远程发现服务器。可以通过在@EnableDiscoveryClient中设置autoRegister=falsee来禁用此行为。
    Spring Cloud将提供阻塞和反应式服务发现客户端。您可以通过设置spring.cloud.discovery.blocking.enabled=falsespring.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 来配置。目前只支持 propertiesyaml 类型。

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.