1:@Value("
t
e
s
t
.
n
a
m
e
"
)
比
如
通
过
此
注
解
可
读
取
到
配
置
文
件
里
的
t
e
s
t
.
n
a
m
e
值
,
如
果
我
们
没
改
动
项
目
代
码
,
仅
仅
改
动
n
a
c
o
s
里
的
参
数
值
,
一
般
不
会
重
新
部
署
项
目
,
那
么
此
注
解
读
取
道
德
仍
然
是
未
改
动
前
的
值
,
除
非
重
新
部
署
2
:
如
何
解
决
上
述
问
题
?
在
我
们
以
后
新
加
接
口
时
,
凡
是
用
到
@
V
a
l
u
e
(
"
{test.name}") 比如通过此注解可读取到配置文件里的test.name值,如果我们没改动项目代码,仅仅改动nacos里的参数值,一般不会重新部署项目,那么此注解读取道德仍然是未改动前的值,除非重新部署 2:如何解决上述问题? 在我们以后新加接口时,凡是用到@Value("
test.name")比如通过此注解可读取到配置文件里的test.name值,如果我们没改动项目代码,仅仅改动nacos里的参数值,一般不会重新部署项目,那么此注解读取道德仍然是未改动前的值,除非重新部署2:如何解决上述问题?在我们以后新加接口时,凡是用到@Value("{test.name}")这种方式读取配置文件的值时,就要在引用此变量的Service层或者Controller层加上@RefreshScope注解,此后如果仅仅改变配置文件里对应参数的值时,无需重新部署项目即可实时动态读取最新的参数值。
例如:
@Service
@RefreshScope
public class ScheduledService {
@Value("${test.name}")
private String name;
public void test()
{
System.out.println("name");
}
即可实时读取到name的最新值