SpringBoot 3.2.2集成Nacos 2.3.0,完成在线修改配置文件

1.下载Nacos

地址:发布历史 | Nacos 官网 

下载完解压,进入nacos到bin目录下

 输入cmd 运行单机启动命令 startup.cmd -m standalone

之后出现

浏览器输入网站 访问  http://localhost:8848/nacos 

 在服务列表 -> 配置列表  点击创建配置 (一共需要创建两个文件)

创建第一个文件:

dataId为 youxin-server-dev.yaml

配置格式为 yaml

配置内容编写你的配置内容(要读取的配置信息)

 创建第二个文件:

dataId为 youxin-server-test.yaml

配置格式为 yaml

 最后这里有两个配置 如图:

 到此nacos下载完成,配置文件也配置好了,接下来就是读取nacos中的配置信息了

2.查看springboot版本,如果不是3.2.2那先设置成和我一样的版本,可以直接手动改成3.2.2,改完刷新maven,我使用的maven版本为3.9.6,JDK 17

 3.引入依赖

        <!-- nacos-->
<!--        服务发现依赖-->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2023.0.3.2</version>-->
<!--        </dependency>-->
<!--        实现从Nacos读取配置的功能-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2023.0.3.2</version>
        </dependency>
        <!-- Spring Cloud Context for @RefreshScope 这个注解,当nacos配置文件更新时,读取到的数据也随之更新-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
            <version>4.1.1</version>
        </dependency>
<!--        使用bootstrap配置文件时使用这个依赖-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-bootstrap</artifactId>-->
<!--            <version>4.1.1</version>-->
<!--        </dependency>-->

方式一:在application.yaml文件中编写配置(在这里演示这一种

方式二:在新建bootstrap.yaml,在bootstrap文件中编写配置 (这种方式也有效

4.编写配置文件application.yaml,如果你的事.properties的扩展名,自己转化一下;如果使用的是bootstrap.yaml配置文件,你就在bootstrap文件中编写如下配置

server:
  port: 8080

spring:
  profiles:
    active: test
  application:
    name: youxin-server
  config:
    import: "nacos:${spring.application.name}-${spring.profiles.active}.yaml"
  cloud:
    nacos:
      config:
        server-addr: localhost:8848 # Nacos服务器地址

5.编写控制器读取nacos配置文件信息

@RestController
@RefreshScope
public class TestNacos {

    //    @Value("${test.message:Default Message}")
    @Value("${test.message}")
    private String message;
    
    @Value("${my.aa}")
    private String aa;

    @GetMapping("/test")
    @PermitAll
    public String test() {
        return message + "==>" + aa;
    }
}

启动项目,打开浏览器访问 /test接口

 已经成功读取到了nacos中的配置文件

修改配置文件 youxin-server-dev.yaml

再次访问test接口 配置信息已经更新了

 

 接下来将application.yaml中的 将test 修改成dev,并重启项目

profiles:
  active: dev

重启成功后再次访问test接口

 说明:

import: "nacos:${spring.application.name}-${spring.profiles.active}.yaml"

这行配置是从nacos中导入配置,格式为nacos:dataId 我这里是使用${}来动态生成导入的文件名,这样就可以根据环境动态读取哪个配置文件,而不是写死;

server-addr: localhost:8848 # Nacos服务器地址

这里nacos的地址可以写的 dev或test等配置中,application.yaml等配置文件中就可以不用写,或者也可以application.yaml等配置文件中动态读取值。

综上所述:配置文件从nacos中动态读取,当你项目在生产环境,需要修改配置文件,从而又要进行重新打包,现在将配置文件从nacos中读取,下次就可以直接修改了,降低了耦合度。

@RefreshScope 注解作用是当nacos配置文件更新时,程序读取到的配置也会随之更新,如何没有加上这个注解,那读取的还是之前的配置数据

springboot的单体项目,没有bootstrap的配置文件,因此需要引入一个依赖才可以编写bootstrap.yaml文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值