threeperson
发布于 2018-12-05 / 1 阅读
0
0

spring-cloud 配置更新触发

#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();

}

```


评论