我正在尝试使用Hibernate Multi-tenancy(每个租户使用数据库的方式)创建一个Spring Boot应用程序(本质上是可扩展的),这部分工作正常。 我正在群集中运行此应用程序,我在HTTP会话中遇到问题(需要在其他节点上复制HTTP会话)。为此,我尝试使用Spring JDBC Session,但是在设置它时遇到了问题。
我只是在gradle文件中包括了Spring Session依赖项,并将@EnableJdbcHttpSession注释应用于了我的AppConfigurations.java文件。
我面临的问题是,它给了我一些组件要求使用名为“ dataSource”的bean的错误,我也尝试声明了这一点。
我正在保存一个数据源图,其中包含每个租户的数据源。
应用程序启动后,该映射以某种方式仅保留一个数据源,这是默认的数据源(为此我创建了一个名为“ dataSource”的bean)。
我不确定我在这里缺少什么,甚至不确定Spring-Session是否支持多租户。
下面的代码显示了我如何创建数据源映射,并在应用程序启动时进一步对其进行初始化:
@Bean(name = "dataSourceMap" )
public Map<String, DataSource> dataSourceMap() {
Map<String, DataSource> datasources = new HashMap<>();
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setPoolName("defaultDataSourcePool");
hikariConfig.setMaximumPoolSize(5);
hikariConfig.setMinimumIdle(5);
hikariConfig.setJdbcUrl(url);
hikariConfig.setUsername(username);
hikariConfig.setPassword(password);
datasources.put(defaultTenant, new HikariDataSource(hikariConfig));
return datasources;
}
类似地,我还定义了一个返回默认数据源的bean。
我希望每个租户都有会话表,这些表将分别保存会话数据。 有人可以提出建议吗?或者如果有人可以通过这种集成共享一些示例代码库,那就太好了。