为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Spring 中更新数据源 bean?

如何在 Spring 中更新数据源 bean?

萧十郎 2023-05-24 15:55:54
我的目标是使用 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更新数据源!


查看完整回答
反对 回复 2023-05-24
  • 1 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信