一、共享配置管理

  1. 在需要拉取公共配置的模块下引入依赖

  <!--nacos配置管理-->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>
  <!--读取bootstrap文件-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bootstrap</artifactId>
  </dependency>
  1. 在nacos控制台->配置管理->配置列表中点击+新建一个公共配置信息

  • Data Id:共享配置文件的唯一Id,用作该共享文件的唯一标识

  • Gruop:该共享文件的分组,其实就是给配置文件分组,一个组下可以有好几个配置文件,没有分组需求的就直接使用默认分组就行

  • 配置文件中的${xxx:xxx},变量,通过读取本地applicantion.yaml文件获取具体的值

    • 第一个 xxxx 是变量在本地application.yaml中的位置

    • 第二个xxx:是该变量的默认值,如果本地没有该变量的值,就使用这个默认值

  1. 在bootstrap.yaml文件下配置nacos地址,以及要读取的公共配置文件的信息

spring:
  application:
    name: cart-service # 服务名称
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: 192.168.243.128 # nacos地址
      config:
        file-extension: yaml # 文件后缀名
        shared-configs: # 共享配置
          - dataId: shared-jdbc.yaml # 共享mybatis配置
          - dataId: shared-log.yaml # 共享日志配置
          - dataId: shared-swagger.yaml # 共享日志配置

  1. 编写本地application.yaml 文件,配置共享配置文件中的变量值,和自己的本地配置


server:
  port: 8082
feign:
  okhttp:
    enabled: true # 开启OKHttp连接池支持
hm:
  swagger:
    title: 购物车服务接口文档
    package: com.hmall.cart.controller
  db:
    database: hm-cart

二、热更新

Nacos上的公共文件,本来就是支持热更新的,也就是说,我们 在nacos上修改公共配置文件的配置信息,就不需要在主机上重启项目服务,就能使公共配置文件更新生效。

当使用公共配置文件注入本地变量的值的时候,修改公共配置文件中的值,本地变量中的值也会跟着改变,也不需要重启

  1. 现在nacos上编写公共配置

注意:文件的dataId格式只能是:[服务名]-[spring.active.profile].[后缀名]

[[服务名]:我们在配置bootstrap.yaml的时候已经配置过(为cart-service)

[spring.active.profile]:在配置bootstrap.yaml的时候也配过,虽然我们配的是dev,但是我们在idea运行的时候已经在运行配置中修改为local了。

当我们的dataId不填写[spring.active.profile]时,,就会默认在所有所有环境下剩下


  1. 本地注入变量

@Data
@Component
@ConfigurationProperties(prefix = "hm.cart")
public class CartProperties {
    private Integer maxAmount;
}
  1. 使用注入的变量

这样只要在nacos的配置中更改macAmount中的值,那么本地中的值也会改变了

顺便一提,一般情况下 上图中的代码的 itemClient和carProperties变量 是要使用@Autowired来注入对象的。不需要是因为 类上使用了@RequiredArgsConstructor注解,会自动生成带有final约束或者@NonNull注解的参数的构造函数.

三、动态路由

官方文档(强烈建议阅读)

参考文章:

‌​​​​​​‬​‌‬‍​​‍​​​⁠​​⁠​‍‬​‌​​‌​‌‬‍​‬​‬​​​‬‬‍​‌‍day04-微服务02 - 飞书云文档 (feishu.cn)

文章作者: 落叶知秋
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 落叶知秋
喜欢就支持一下吧