猿问

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

我的目标是使用 Spring 创建一个 Web 服务器。它必须实现多租户,如果您不使其动态化(添加、删除、更改),它会很好用。是否可以在 Spring 中更新数据源 bean?


我的代码:


@SpringBootApplication

public 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 的数据源,如果使用此方法添加,数据库连接仍然丢失。


萧十郎
浏览 175回答 1
1回答

HUWWW

对于有同样问题的人的简单解决方案:添加@RefreshScope&nbsp; &nbsp; @Bean&nbsp; &nbsp; @RefreshScope&nbsp; &nbsp; public DataSource dataSource() {&nbsp; &nbsp; &nbsp; &nbsp; CustomRoutingDataSource customDataSource = new CustomRoutingDataSource();&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; &nbsp; &nbsp; return customDataSource;&nbsp; &nbsp; }在 pom.xml 中添加弹簧执行器端点<dependency>&nbsp; &nbsp; <groupId>org.springframework.boot</groupId>&nbsp; &nbsp; <artifactId>spring-boot-starter-actuator</artifactId></dependency>POST 到/actuator/refresh更新数据源!
随时随地看视频慕课网APP

相关分类

Java
我要回答