• SpringCloudAlibaba—Nacos config


    nacos做配置中心

    应用场景

    当你在application.properties里面设置一些变量值value的时候,在项目中也进行使用了。

    但是项目上线之后,突然发现需要修改配置文件的value值。那你必须要修改然后重新打包上线,就很麻烦,也会浪费重新上线的时间,nacos config就可以在平台上去注册配置,然后动态的修改就可以了,会同步修改项目中使用到的配置value值,可以避免重新打包上线项目。

    使用步骤 

    1、导入依赖

    1. <dependency>
    2. <groupId>com.alibaba.cloudgroupId>
    3. <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
    4. dependency>
    5. <dependency>
    6. <groupId>org.springframework.cloudgroupId>
    7. <artifactId>spring-cloud-starter-bootstrapartifactId>
    8. dependency>
     
    

    2、bootstrap.properties(必须用bootstrap,官方规定)

    1. coupon.user.name=我是上线用户1
    2. coupon.user.age=18
    3. spring.application.name=CouponMoudle

    3、application.yml

    1. # mysql
    2. spring:
    3. datasource:
    4. #MySQL配置
    5. driverClassName: com.mysql.cj.jdbc.Driver
    6. url: jdbc:mysql://localhost:3306/gulimail_sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    7. username: root
    8. password: 111111
    9. cloud:
    10. nacos:
    11. discovery:
    12. server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
    13. config:
    14. server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
    15. application:
    16. name: CouponMoudle
    17. mybatis-plus:
    18. mapper-locations: classpath:/mapper/**/*.xml
    19. global-config:
    20. db-config:
    21. id-type: auto
    22. server:
    23. port: 8000

    4、 CouponController使用配置value

    1. @RefreshScope //开启动态刷新
    2. @RestController
    3. @RequestMapping("coupon/coupon")
    4. public class CouponController {
    5. @Autowired
    6. private CouponService couponService;
    7. @Value("${coupon.user.name}")
    8. private String name;
    9. @Value("${coupon.user.age}")
    10. private Integer age;
    11. @RequestMapping("/user/test")
    12. public R test(){
    13. return R.ok().put("name",name).put("age",age);
    14. }
    15. }

    注意:启动类上记得加@EnableDiscoveryClient,这里是默认项目已经搭建好了,主要是如何在项目中使用nacos做配置中心

    5、在配置中心添加配置 

    Data ID的配置:

        完整格式:${prefix}-${spring.profiles.active}.${file-extension}

        prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
        spring.profiles.active 即为当前环境对应的 profile 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
        file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

     因为我配置了spring.application.name,前缀就是name,后缀是配置文件格式,自己选择,也可以配置。

     6、动态修改配置,无需重启!

     

    nacos命名空间

    刚刚我们添加了的配置都会默认public(保留空间)。

     但是开发中肯定都是多环境生成开发。

    命名空间就可以实现配置隔离
    默认: public(保留空间);默认新增的所有配置都在public空间。其他环境:开发,测试,生产
    配置集
    配置集ID配置分组

    第一步,新增命名空间

    id可以自己配置,不配置会随机生成

     我们在dev环境下也编写一个配置

     然后我们再去启动Coupon服务,这时候我们没有任何配置,它还是会默认去加载public环境下的配置文件。但是我们如果上线了要想让他去加载dev的配置文件,怎么做呢?

    第二步,配置springboot配置文件 

    很简单,在springboot里面配置

     

     

    spring.cloud.nacos.config.namespace=1164213208    #命名空间id

     命名空间必须在bootstrap里面配置,这就是官方规定!不能在application里面配置!

     

    启动后,发现它读取的就是dev环境下的配置

     当然我们除了可以区分生产环境的命名空间,也可以区分项目,看自己需求。

    扩展:分组

    nacos配置文件也可以配置分组

    在springboot里面配置使用就是 

     

    spring.cloud.nacos.config.group=111

    我们可以定义一个某个节日例如双十一分组,在当天就使用那个分组的配置,也很方便 

  • 相关阅读:
    linux下nvme各文件的含义
    主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》
    Redis+整合SpringDataRedis
    Mac 安装依赖后依旧报错 ModuleNotFoundError: No module named ‘Crypto‘
    javascript案例40——tab导航栏(切换、添加、删除、修改)综合案例(es6面向对象、类的使用)
    MindSpore优秀论文5:[AAAI] CycleCol:基于循环卷积神经网络对真实单色-彩色摄像系统着色
    17-VMware Horizon 2203 虚拟桌面-Win10 手动桌面池浮动(十七)
    java异常 | 处理规范、全局异常、Error处理
    Cadence OrCAD Capture 层次化设计时双击顶层模块无法进入底层图纸问题解决方案
    太速科技-基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡
  • 原文地址:https://blog.csdn.net/m0_46845579/article/details/126126290