多服务nacos配置文件统一管理

2021-06-16  本文已影响0人  孤泉冷月

背景

nacos配置文件每个服务都有一个,而且在开发环境下每个nacos配置文件需要保持一致,并且每个服务打包时各个nacos配置文件需要互相独立.
nacos配置文件在开发环境下经常修改,每次每个nacos配置文件都要改一遍,还容易出错冲突, 需要有一个文件统一管理nacos的命名空间和开发环境

使用一个文件统一管理

+----------------------------------+             
|     开发根目录下:                  |             
|  bootstrap-framework.yml         |
| (含spring.profiles.active,       |
|  spring.cloud.nacos.namespace)   |
+----------------------------------+             
            |
            | 
            ↓
+------------------------------------+
|  服务内:                            |       由于SpringBoot的加载机制, 此文件在开发环境下相同字段会被上面的替代,不同的会和上面的互补
|  bootstrap-framework.yml           |        !!但是在服务打包的时候生效
| (含spring.profiles.active,         |
|  spring.cloud.nacos.namespace)     |
+------------------------------------+
            |
            | 
            ↓
+-------------------------+
|     服务内:              |         在此文件内使用`spring.profiles.include='framework'`
|     bootstrap.yml       |         统一引入`spring.profiles.active`和`spring.cloud.nacos.namespace`
+-------------------------+

注意

在开发环境下,在根目录下的bootstrap-frame.yml修改activate或namespace 会在所有服务都会生效
!! 但是,如果要将服务打包, 请在对应服务内的bootstrap-frame.yml文件修改activate或namespace, 此文件不会被打包进去

总结

利用Spring.profiles.include 可以将不同的服务配置整合, 同时它也遵守SpringBoot配置文件的加载机制,
利用这个机制我们可以统一管理开发环境下的配置文件

SpringBoot 配置文件加载机制

Spring Boot从以下位置加载配置: 优先级从高到低顺序,高优先级覆盖低优先级,如有不同内容,高优先级和低优先级形成互补配置

  1. 命令行参数
  2. 来自java:comp/env的JNDI属性
  3. java系统属性(System.getProperties())
  4. 操作系统环境变量
  5. RandomValuePropertySource配置的random.*属性值
  6. jar包外部的application-{profile}.properties或者application.yml(带spring.profile)配置文件
  7. jar包内部的application-{profile}.properties或者application.yml(带spring.profile)配置文件
  8. jar包外部的application.properties或者application.yml(不带spring.profile)配置文件
  9. jar包内部的application.properties或者application.yml(不带spring.profile)配置文件
  10. @Configuration注解类上的@PropertySource
  11. 通过SpringApplication.setDefaultProperties指定的默认属性
上一篇下一篇

猜你喜欢

热点阅读