nacos服务配置和环境

一、多环境配置(Profile)

SpringProfiles提供了一种将不同环境配置隔离的方法,使用 “-” 把配置文件分割成了多个文档块,因此我们可以在不同的文档块中针对不同的环境进行配置,并在第一个文档块内对配置进行切换。

如:

application.yml:默认配置
application-dev.yml:开发环境配置
application-test.yml:测试环境配置
application-prod.yml:生产环境配置

修改 application.yml中的spring.profiles.active属性,配置多个文档块,并在第一文档快内激活指定环境的Profile。这个属性可以在 application.yml 文件中直接设置,也可以通过命令行参数、环境变量等方式设置:

  • 配置文件设置

  • 启动命令设置   

命令:--spring.profiles.active=指定环境

  • 环境变量设置

说明:由于application.yml中用了active: ${PROFILES_ACTIVE:dev},即可以通过设置环境变量PROFILES_ACTIVE来配置

  • Maven构建

在Maven构建时,也可以通过设置spring.profiles.active属性来激活特定的配置文件

二、配置文件读取顺序

配置文件优先级

application在项目中可以有几个不同的存放位置,读取优先级也不一样,优先级(1-优先级最高)和目录如图:

注:

如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。

如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。

配置参数加载优先级

以下是常用的 Spring Boot 配置形式及其加载顺序(优先级由高到低):

  1. 命令行参数:通过启动命令传递给 JVM 的参数,如 -Dkey=value 或 --key=value
  2. SPRING_APPLICATION_JSON:通过环境变量或系统属性传递的 JSON 格式配置
  3. 环境变量
  4. application-{profile}.properties 或 application-{profile}.yml:特定 Profile 的配置文件
  5. application.properties 或 application.yml:通用配置文件
  6. @PropertySource 和 @PropertySources 注解指定的配置
  7. 默认属性:通过 SpringApplication.setDefaultProperties 设置的默认属性
  8. 外部配置文件:通过 spring.config.location 指定的位置加载的配置文件,比如跟jar包同级的application.yml
  9. classpath:/ 和 classpath:/config/:类路径下的根目录或 config 包中的配置文件
  10. file:./ 和 file:./config/:项目根目录或 config 子目录中的配置文件

三、Nacos配置中心和Profile环境独立

在使用Nacos作为配置中心时,SpringCloud应用可以通过Nacos来集中管理和读取配置文件。

结合我们的配置,以下会详细解释如何从Nacos读取配置文件,以及为什么每个Profile在Nacos环境中是独立的

主配置文件

主配置文件关键配置(application.yml)

spring:
  application:
    #项目名
    name: 服务名这是
  # 配置文件
  profiles:
    active: ${PROFILES_ACTIVE:dev}
  config:
    import: optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml
  # nacos配置
  cloud:
    nacos:
      username: ${NACOS_USER_NAME:}
      password: ${NACOS_PASSWORD:}
      discovery:
        server-addr: ${NACOS_ADDR:http://192.168.1.1:8848}
        namespace: ${spring.profiles.active}
      # 配置中心
      config:
        #服务器地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        namespace: ${spring.profiles.active}

配置文件读取流程

  • 激活Profile:在 application.yml中,通过spring.profiles.active属性指定了默认激活的Profile。
  • 从Nacos导入配置:spring.config.import属性指定了从Nacos导入配置的路径。这里的路径是nacos:${spring.application.name}-${spring.profiles.active}.yaml,这意味着它会尝试从Nacos读取名为 hgtc-device-server-${spring.profiles.active}.yaml的配置文件

例:如果激活的Profile是 dev,则会尝试从Nacos读取hgtc-device-server-dev.yaml。

  • Nacos 命名空间:spring.cloud.nacos.discovery.namespace和spring.cloud.nacos.config.namespace都使用了${spring.profiles.active}来设置命名空间。这意味着不同环境的配置会存储在不同的命名空间中,这样每个环境的配置都是独立的,不会相互影响。

例:spring.profiles.active配置的dev,配置文件则会读取application-dev.yml,nacos环境命名空间也会读取dev,则nacos的测试环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值