Nacos配置热更新的三种方式
配置热更新的定义:
1.外部配置中心配置项发生变化时,应用端在无需重启应用的情况下能自动同步最新配置数据
方式一、Environment热更新
1.Environment代表了应用的运行时环境,其中包括了profiles 和 properties,而properties属性可能来源于properties文件、JVM properties、system环境变量等等
2.nacos配置变更后,environment对象中能自动同步变更的数据,可通过其String getProperty(String key);获取
Environment对象:
Environment对象可直接注入使用,或者通过EnvironmentAware获取使用
1,在hailtaxi-driver服务中进行实验,找到Drivercontro1ler,添加如下代码
@Autowired
private Environment environment;
@GetMapping("/appName")
public string getAppName(){
return environment.getProperty("app.name");
}
2,在nacos控制台找到xxx-driver-dev.yaml配置文件,添加如下配置并发布
app:
name:edhug
3,启动访问:http://localhost:8088/driver/appName
4,在控制台更改app.name,不重启应用,再次访问查看结果
方式二、@ConfigurationProperties热更新
1.ConfiqurationProperties注解的作用是用于获取配置文件中的配置项并绑定到bean的属性上
2.nacos配置变更后,ConfiqurationProperties所标注bean的属性能自动刷新值
1,创建com.itheima.driver.properties.AppProperties
@configurationProperties("app")
@configuration
@Data
public class AppProperties {
private string name;
}
修改Drivercontroller#getAppName方法
@Autowired
private Environment environment;
@Autowiredprivate AppProperties appProperties;
@GetMapping("/appName")
public string getAppName(){
return environment.getProperty("app.name")+"---"+ appProperties.getName();
}
方式三、@Value+@RefreshScope热更新
1.Value注解也是可以将指定的配置项绑定到bean的属性上
2.nacos配置变更后Vaue标注的属性默认不会自动刷新值,需要在对应bean上标注Refreshscope注解才可以
@RefreshScope
@RestController
@RequestMapping(value = @value"/driver")
@SLf4j
public class DriverController {
@Value("${app.name:edhug}")//name后面的冒号代表加载不到值的时候默认值为edhug
private String appName;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器