springboot1.x apollo 更改属性值不起作用。 ConfigurationProperties

1. @ApolloConfigChangeListeners 默认监控命名空间是 application.properties , 如果是自己创建的namespace ,一定要明确指定(包含文件扩展名)。

 @ApolloConfigChangeListener(value = {"xx.yml"})
public void onChange(ConfigChangeEvent configChangeEvent) {
ConfigChange change;
System.out.println("Xxx");
}
同理如果使用手动方式注册监听器的时候也 应明确指定命名空间。(同样注意一定加上文件扩展名)
ConfigChangeListener configChangeListener = new ConfigChangeListener() {
@Override
public void onChange(ConfigChangeEvent configChangeEvent) {
ConfigChange change;
System.out.println("Xxx");
}
};
ConfigService.getConfig("xx.yml").addChangeListener(configChangeListener);
注意这里的getConfig ,还有一个getAppConfig 还有一个 getConfigFile 。 其中前两个对应的监听执行器是AbstractConfig , 后一个是 AbstractConfigFile 。
这三个方法, 其中 getAppCofnig是指默认默认空间 application ,但是调试发现其参数是不带文件扩展名称的。
public static Config getAppConfig() {
return getConfig(ConfigConsts.NAMESPACE_APPLICATION);
}
String NAMESPACE_APPLICATION = "application";
为什么我使用getConfig,其入参也是namespace ,为什么我传入参数时 必须加上扩展名称呢???(不加的时候,数据发生变化时,根本就不调用你定义的监听器,搞了半天。)
public static Config getConfig(String namespace) {
return s_instance.getManager().getConfig(namespace);
}
还有一个getConfigFile 这个是监听整个配置文件的,文件变更即调用,但是请求值是整个文件,需要自己对比哪些值发生变化。

问题: getConfig()监控的yml 文件,我是对应的bean @ConfigurationProperties("defines") . 如何将这个变化同步到bean呢?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值