一、集成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
在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: 在程序里面所有用到定时任务的类中都要实现上述接口。
版权归原作者 mawei7510 所有, 如有侵权,请联系我们删除。