【发布时间】:2020-07-21 16:03:37
【问题描述】:
我一直在做springboot应用,它包含10多个数据源,叫做Multi-tenant。
一开始不知道从哪个数据库查询数据。我只是根据http请求参数得到了数据库配置并建立了数据库连接,所以spring应用初始化时无法加载dao组件。
那么当我得到数据库连接后,如何动态注入dao组件呢?
另外,下一个http请求可能会从另一个数据库获取信息,我要根据这个数据库连接再次注入这个dao组件
【问题讨论】:
我一直在做springboot应用,它包含10多个数据源,叫做Multi-tenant。
一开始不知道从哪个数据库查询数据。我只是根据http请求参数得到了数据库配置并建立了数据库连接,所以spring应用初始化时无法加载dao组件。
那么当我得到数据库连接后,如何动态注入dao组件呢?
另外,下一个http请求可能会从另一个数据库获取信息,我要根据这个数据库连接再次注入这个dao组件
【问题讨论】:
我不确定您的应用程序的结构,但对于类似的用例,我们使用 @Requestscope 注入 bean(代码用于 Google Datastore,其中命名空间根据请求动态解析)
@Bean
@RequestScope
public DatastoreNamespaceProvider datastoreNamespaceProvider() {
return () -> namespaceProvider().getNamespace();
}
其中namespaceProvider()又是一个带有@Requestscope的bean,它从API http请求中读取值。
【讨论】: