Edehuag

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

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;

posted on   饿得慌~  阅读(441)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示