我有一个带有DataSourceManager
bean的Spring mvc rest webservice,它包含一个数据源映射。每个客户都有自己的数据库,因此拥有自己的数据源。 webservice以编程方式从DataSourceManager
加载客户Datasource,如果它不存在,则会创建一个新的。
使用此实现可以使用注释驱动的事务管理吗?我读到的所有示例都在配置文件中声明了一个或多个数据源。
答案 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
注释与相应的数据源一起使用。
似乎有效