0


SpringBoot集成Nacos动态读取配置文件及服务发现

一、集成Nacos

1)配置pom文件

        <!--nacos-config 版本号和springboot对应-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <!--nacos-discovery 版本号和springboot对应-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <!--nacos-web 需要此依赖,不然服务列表里面服务注册不成功-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2)修改配置文件

nacos默认读取bootstrap.xml文件

spring:
  application:
    name: test-server-tcp
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        namespace: ${spring.profiles.active}
        server-addr: 192.168.0.1:8848
      config:
        namespace: ${spring.profiles.active}
        server-addr: 192.168.0.1:8848
        ext-config:
          - data-id: test-server-tcp.yml
            group: ${spring.profiles.active}
            refresh: true
  1. 在nacos管理界面配置

    1.新建namespace

2.新建配置文件

二、动态读取变化的配置

在需要引用配置的类中加入注解@RefreshScope

示例代码:

@RefreshScope
@RestController
@RequestMapping(value="/config")
public class NacosConfig {

    @Value(value = "${nacos.test-name}")
    private String testName;
    @Value(value = "${nacos.test-port}")
    private String testPort;

    @GetMapping(value = "/get")
    public String getConfig(){
        return "name: "+ testName +";" + "port: "+ testPort +";";
    }

}

可以通过http url来验证动态配置是否生效

三、动态配置发生变化后,定时任务不执行问题

问题:程序里面有定时任务,定时任务读取的配置如果发生动态变化后,定时任务不执行。

原因:定时任务读取配置文件懒加载的方式

解决:在定时任务所在的类,实现一个接口

ApplicationListener<RefreshScopeRefreshedEvent>并实现其方法,空方法即可

PS: 在程序里面所有用到定时任务的类中都要实现上述接口。


本文转载自: https://blog.csdn.net/mawei7510/article/details/126585547
版权归原作者 mawei7510 所有, 如有侵权,请联系我们删除。

“SpringBoot集成Nacos动态读取配置文件及服务发现”的评论:

还没有评论