我有一个带有 DataSourceManager bean的Spring mvc rest webservice,它包含一个数据源映射 . 每个客户都有自己的数据库,因此拥有自己的数据源 . webservice以编程方式从 DataSourceManager 加载客户Datasource,如果它不存在则创建一个新的 .
DataSourceManager
有了这个实现,可以使用注释驱动的事务管理吗?我读到的所有示例都在配置文件中声明了一个或多个数据源 .
最后我用这个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 注释与相应的数据源一起使用 . 似乎有效
SessionInfo
@Transactional
1 回答
最后我用这个bean解决了我的问题:
其中
SessionInfo
是一个持有客户的会话bean,DataSourceManager
是一个包含所有数据源的全局bean . 每个Web请求都加载正确的事务管理器,@Transactional
注释与相应的数据源一起使用 . 似乎有效