Spring 可切换Grails数据源
我们需要在grails应用程序中使用多个数据源。每个用户,即每个http会话(从用户登录到注销),应用程序根据用户的请求获取不同的数据源 上面的链接提供了一个很好的解决方案。我们已经实现了页面中所说的,修改了动态配置。它运行良好 1) 但是这段代码如何在会话之间切换数据源呢? 2)Spring 可切换Grails数据源,spring,grails,Spring,Grails,我们需要在grails应用程序中使用多个数据源。每个用户,即每个http会话(从用户登录到注销),应用程序根据用户的请求获取不同的数据源 上面的链接提供了一个很好的解决方案。我们已经实现了页面中所说的,修改了动态配置。它运行良好 1) 但是这段代码如何在会话之间切换数据源呢? 2) ThreadLocal contextHolder在此代码中有什么用途 请解释一下 谢谢。Grails将请求绑定到线程。ThreadLocal变量为访问它的每个线程保存一个不同的值(在不同步的情况下允许线程安全)
ThreadLocal contextHolder
在此代码中有什么用途
请解释一下
谢谢。Grails将请求绑定到线程。
ThreadLocal
变量为访问它的每个线程保存一个不同的值(在不同步的情况下允许线程安全)
因此,在他的流程中发生的是:
环境控制器
中选择一个环境
,控制器将其保存到用户会话中beforeFilter
查看每个请求,并确定用户会话中是否存在环境。如果是这样,他将EnvironmentHolder
设置为指向该环境。由于这是一个ThreadLocal
,因此每个线程(在本例中为request)都可以有自己的值
dataSource
bean时,他的SwitchableDatasource
bean根据EnvironmentHolder
的ThreadLocal
值选择正确的数据源谢谢你的回答。因此,每次spring在请求处理中需要dataSource时,它都会参考
SwitchableDatasource
bean。每个会话返回的数据源都不同。我说得对吗?