Spring JPA根据请求标头更改数据源

时间:2016-04-28 17:29:24

标签: spring jpa spring-data-rest

我开发了一个带有spring-data-rest的应用程序。 我喜欢它,它就像一个魅力。

我想要做的是(为多个客户实现一个后端)是根据在自定义请求标头中发送的apikey来更改我的存储库的数据源。

可以从管理所有数据库配置的外部微服务中检索连接信息(URL,凭据,数据库)。

我们的想法是在启动时检索所有可用的数据库连接,并将它们存储在地图中,其中apikey为键,连接信息为值。

我不清楚如何在运行时为每个传入请求更改我的repo的数据源。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

根据您的JPA提供商,您想要的是多租户支持。

对于Hibernate,有一个很好的multi-tenancy API,可以很好地插入Spring来配置要使用的数据源。某些API详情,请MultiTenantConnectionProviderCurrentTenantIdentifierResolver

答案 1 :(得分:0)

我终于找到了使用AbstractRoutingDataSource的解决方案。 这篇文章救了我的一天。一个非常易于使用和理解的解决方案。 http://fizzylogic.nl/2016/01/24/Make-your-Spring-boot-application-multi-tenant-aware-in-2-steps/