我正在将应用程序从 Grails 2 升级到 Grails 3。在应用程序中,我有一个 Grails 服务,我需要根据 url 参数选择数据源。所以我在 Grails 2 中的设置看起来像这样(伪代码):
应用程序.yml:
development:
dataSource_1_a
dataSource_2_a
dataSource_2_b
test:
dataSource_1_a
dataSource_2_a
dataSource_2_b
FooService.groovy:
Sql getSqlInterface(Environment env) {
switch(env){
case Environment.A:
return new Sql(dataSource_2_a)
case Environment.B:
return new Sql(dataSource_2_b)
default:
throw new Exception("Invalid environment $env!")
}
}
但是在 Grails 3 中,我还没有设法在同一个服务中使用两个数据源(在 中带有一个dataSources
块application.yml
)。如果我打电话给其中一个,dataSource
那么那个会起作用,但另一个不起作用。我知道您可以这样做static mapping = { datasource 'secondary' }
,但这似乎也不支持多个数据源。