- 引入maven依赖
<dependency>
<groupId>com.niezhiliang</groupId>
<artifactId>nacos-config-refresh-spring-boot-starter</artifactId>
<version>0.1.1</version>
</dependency>
- 开启配置项
nacos:
config:
auto-refresh: true
- 组件加载成功会输出如下日志
2022-06-30 09:25:26.198 INFO 16828 --- [ main] .r.a.NacosConfigRefreshAutoConfiguration:
--------------------------------------------
Nacos-config-refresh-starter load successful
--------------------------------------------
功能名称 | 示例 | 是否实现 |
---|---|---|
@Value 动态刷新 | @Value("${user.name}" ) |
√ |
@NacosValue 动态刷新 | @NacosValue("${user.name}" ) |
√ |
占位符默认值 | @Value("${user.name:zhangsan}" ) |
√ |
占位符嵌套 | @Value("${${user.name}}" ) |
√ (慎用) |
# before
xx:
zz: xx.oo
oo: hello
# after
xx:
zz: xx.yy
yy: helloWorld
占位符嵌套这种刷新方式不推荐使用,平常工作中单纯的占位符用的也特别少。我也没有找到太好的方式来解决。 目前这种情况要支持自动刷新的话,eg:
${${xx.zz}}
我们知道这样的占位符是先从里面一层一层解析的, 解析后,先从环境对象中得到xx.zz
的值xx.oo
等同于${xx.oo} ,然后去环境对象读取值xx.oo的值 得到hello。 如果直接从before方式改为after方式的话,这种是能刷新的。