如果DB.URL的环境变量发生更改,我正在尝试更新DB数据源。以下是我的班级,
@SpringBootApplication
@ConfigurationProperties(value="myapp")
public class MyApp {
@Value("${myapp.db.url}")
String databaseURL;
@Value("${myapp.db.username}")
String databaseUsername;
@Value("${myapp.db.password}")
String databasePassword;
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
@Bean
@RefreshScope
@Primary
public DataSource getDataSource() {
return DataSourceBuilder.create().username(databaseUsername).password(databasePassword).url(databaseURL)
.driverClassName("org.postgresql.Driver").build();
}
}
但是当我更新环境DB.URL时,它不会向新数据库发出请求。
我已经参考了文档,因为可以更新数据源, http://projects.spring.io/spring-cloud/spring-cloud.html#_refresh_scope
我班上缺少什么?
答案 0 :(得分:0)
您需要在类上下文 MyApp 上移动此 @RefreshScope 注释:
@SpringBootApplication
@ConfigurationProperties(value="myapp")
@RefreshScope
public class MyApp {
...
}
此外,请确保在服务http://{your.api.url}/actuator/refresh
上请求POST,以便在更改属性后刷新它。
答案 1 :(得分:0)
如果将 @RefreshScope 添加到类而不从方法中删除。然后,将刷新 @Value 变量。并且数据源将改变。