【发布时间】:2015-01-10 00:12:57
【问题描述】:
是否可以将 Spring Boot 配置为使用 MultiTenantConnectionProvider 以便我系统的每个客户端都连接到自己的私有数据库?
具体来说,我希望使用内置的休眠支持来支持多租户:
这是我所追求的那种配置的一个例子,但我不知道如何在 Spring Boot 设置中使用它:
我已经尝试将这些属性添加到application.properties:
spring.jpa.hibernate.multiTenancy=DATABASE
spring.jpa.hibernate.tenant_identifier_resolver=com.mystuff.MyCurrentTenantIdentifierResolver
spring.jpa.hibernate.multi_tenant_connection_provider=com.mystuff.MyMultiTenantConnectionProviderImplX
我也尝试编写自己的 CurrentTenantIdentifierResolver 和 MultiTenantConnectionProvider 并尝试从我的主要 @Configuration bean 中提供这些:
@Bean
public CurrentTenantIdentifierResolver currentTenantIdentifierResolver() {
return new CurrentTenantIdentifierResolver() {
public String resolveCurrentTenantIdentifier() {
// this is never called ...
}
public boolean validateExistingCurrentSessions() {
// this is never called ...
}
};
}
@Bean
public MultiTenantConnectionProvider multiTenantConnectionProvider() {
return new AbstractMultiTenantConnectionProvider() {
protected ConnectionProvider getAnyConnectionProvider() {
// this is never called ...
}
protected ConnectionProvider selectConnectionProvider(String s) {
// this is never called ...
}
};
}
这些似乎都没有任何影响,所以我的问题是如何让 spring-boot / spring-data 使用这些多租户类?
感谢您的帮助!
【问题讨论】:
-
查看我的问题here。
我使用LocalContainerEntityManagerFactoryBean,它可以工作。
但我并不完全理解这与.ymlor@ 之间的区别987654331@.
我同意@M.Deinum ,在ymlhibernate 控制mulitTenantConnectionProvider和CurrentTenantIdentifierResolver的生命周期。但我不知道为什么。
标签: java spring hibernate spring-data spring-boot