对数据源列表进行Spring事务管理

时间:2015-12-14 09:26:16

标签: java spring spring-transactions transactional

我有一个带有DataSourceManager bean的Spring mvc rest webservice,它包含一个数据源映射。每个客户都有自己的数据库,因此拥有自己的数据源。 webservice以编程方式从DataSourceManager加载客户Datasource,如果它不存在,则会创建一个新的。

使用此实现可以使用注释驱动的事务管理吗?我读到的所有示例都在配置文件中声明了一个或多个数据源。

1 个答案:

答案 0 :(得分:0)

最后我用这个bean解决了我的问题:

@Bean
@Scope(value=WebApplicationContext.SCOPE_REQUEST, proxyMode=ScopedProxyMode.TARGET_CLASS)
public PlatformTransactionManager txManager(SessionInfo sessionInfo, DataSourceManager dsManager)   
{               
    return dsManager.getTransactionManager(sessionInfo.getCustomerId()); 
}

其中SessionInfo是一个持有客户的会话bean,而DataSourceManager是一个包含所有数据源的全局bean。每个Web请求都加载正确的事务管理器,@Transactional注释与相应的数据源一起使用。 似乎有效