报错:
背景:
使用Apollo最为配置中心, Apollo客户端会定时拉取最新配置进行刷新配置, 但是我的项目中引入Hikari 数据库连接池, 于是在Apollo刷新的时候出现一连串的报错
这样
这样
org.springframework.boot.context.properties.bind.BindException:
Failed to bind properties under '' to javax.sql.DataSource
根本原因还是 HikariConfig 这个类中有个字段
private volatile boolean sealed;
这个是封装的意思, 它默认为true, 也就是如果一个线程池被设置后, 它是不能改变的, 但是为什么又会动他呢, 这是Spring自己的机制
解决:
在配置的Bean上加入 @RefreshScope