2015-12-14 41 views
0

我有一個Spring mvc rest webservice,其中包含一個包含數據源映射的DataSourceManager bean。每個客戶都有自己的數據庫,因此擁有自己的數據源。 webservice以編程方式加載客戶數據源,從DataSourceManager加載,如果不存在,則創建一個新的。通過數據源列表彈出事務管理

使用此實現可以使用註釋驅動事務管理嗎?我讀過的所有示例都有一個或各種數據源在配置文件中聲明。

+0

你基本上擁有的是多租戶,如果安裝正確,你可以使用正常的事務劃分,就好像你有一個單一的數據源。一個這樣的事情被記錄在[這裏](https://mdeinum.wordpress.com/2007/01/05/one-application-per-client-database/)。我們將它用於Web應用程序,但不應該很難將其應用於Web服務(基本上也是Web應用程序)。 –

回答

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註釋與相應的數據源一起工作。 看來工程

相關問題