#spring-cloud 配置更新触发
##通过访问端点bus-refresh实现
地址:http://xxxx/actuator/bus-refresh/{服务名称(区分大小写)}
方式:POST
说明:不添加服务名,则更新所有注册到注册中心服务的配置。
举例:http://xxxx/actuator/bus-refresh/xxx-server
##配置动态更新原理
###代码解析 参考以下博文,写得比较详细与我们目前版本基本匹配
https://www.cnblogs.com/niechen/p/8979578.html
##异常处理
###日志片段
```
Caused by: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'dataSource': Could not bind properties to 'HikariDataSource'
```
###异常原因
已注入bean中配置默认是不允许更新的,所以会导致该异常发生。
###异常影响
该异常不会影响其他配置更新,只是指定配置无法更新。且数据库配置一般不会动态调整,所以即使
不能动态更新也无大碍。
###代码片段
```
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "datasource")
@Qualifier("dataSource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
```
###处理办法
通过@RefreshScope 告诉系统强制更新指定的bean
```
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "datasource")
@Qualifier("dataSource")
@RefreshScope
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
```