我的目标是使用 Spring 创建一个 Web 服务器。它必须实现多租户,如果您不使其动态化(添加、删除、更改),它会很好用。是否可以在 Spring 中更新数据源 bean?我的代码:@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) throws IOException { SpringApplication.run(MyApplication.class, args); } //Multitenancy @Bean public DataSource dataSource(){ //implements AbstractRoutingDataSource CustomRoutingDataSource customDataSource = new CustomRoutingDataSource(); //logic here return customDataSource; }}我试过的:CustomRoutingDataSource c = context.getBean(CustomRoutingDataSource.class);c.setTargetDataSources(CustomRoutingDataSource.getCustomDatasources());它更新 bean(?) 但不更新 Spring 的数据源,如果使用此方法添加,数据库连接仍然丢失。
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
对于有同样问题的人的简单解决方案:
添加@RefreshScope
@Bean
@RefreshScope
public DataSource dataSource() {
CustomRoutingDataSource customDataSource = new CustomRoutingDataSource();
...
return customDataSource;
}
在 pom.xml 中添加弹簧执行器端点
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
POST 到/actuator/refresh更新数据源!
添加回答
举报
0/150
提交
取消