gpt4 book ai didi

java - 手动创建的多个数据源的事务管理

转载 作者:行者123 更新时间:2023-12-02 02:12:43 25 4
gpt4 key购买 nike

我正在开发一个应用程序,其中我必须根据从客户端传递的客户 ID 连接到不同的数据库。所有数据库的架构都是相同的。它是一种 Multi-Tenancy 应用程序。由于我不知道会有多少客户,因此无法使用 xml 配置静态创建数据源,因此我必须手动创建数据源。

我们使用 Spring JdbcTemplate 连接到数据库,连接参数来自另一个保存应用程序配置的数据库。我能够正确连接到数据库,但方法调用没有在事务中发生。以下是仅对一个数据库进行数据库连接的代码片段,我打算将其扩展到多个数据库:

BasicDataSource datasource = new BasicDataSource();
// set database connection params
....
// create jdbcTemplate,
jdbcTemplate = new JdbcTemplate(datasource);
// create transaction managers
PlatformTransactionManager txManager = new DataSourceTransactionManager(datasource);

我的想法是手动创建事务管理器并以某种方式将其绑定(bind)在spring容器中,以便所有带有@Transactional注释的方法/类都可以使用这个事务管理器。我无法弄清楚如何绑定(bind) txManager,以便所有带有 @Transactional 的方法/类都将使用此事务管理器。我不确定这是否是正确的方法,我是否应该为每个数据源创建一个事务管理器,因为我不希望事务跨越多个数据库,但我希望每个服务方法调用都应该在事务中。注意:我的所有服务类都有 @Component 和 @Transactional 注释。

我是否以正确的方式解决问题?

最佳答案

我认为以下answer提供您正在寻找的东西。否则,您将需要一名全局事务经理。全局事务管理器将与 JEE 容器捆绑在一起,或者可以由 Atomikos 等事务管理器独立提供。 Spring documentation涵盖两者

关于java - 手动创建的多个数据源的事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21261869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com