我创建了一个插件,负责通过这种方式RDBMS访问辅助数据源,这样我们就从将要使用它的应用程序中隐藏域和服务层(这会阻止它们修改该源)。我已将该插件发布到工件,然后将其成功导入到我的应用程序中。但是,插件使用的数据源文件已从包装中排除,并且在调用插件中的服务方法时,它正在尝试针对我的默认数据源执行那些查询。
谢谢
更新
下面提供的答案将起作用,基本上,这就是Grails中多个数据源的工作方式。这样做的唯一缺点是,当我自己开发插件并希望将其作为应用程序运行时,以确保它能够执行我想要的数据源,而grails期望的数据源必须称为dataSource,因此我必须将其注释掉。
static mapping = {
// datasource 'dataSource_lookup'
}
为了能够运行它。然后,当我看到所有东西都如我所愿并且想要发布该插件时,我必须遍历所有域文件并取消注释上面的行,以便在将该插件导入到我的主应用程序中时将具有参考到辅助数据源。但是,这是非常非常痛苦和缓慢的。
有一个更好的方法吗?为什么默认数据源必须称为dataSource?可以改变吗?
在插件的域类中,您必须执行以下操作
static mapping ={
//if you need to use the second ds only in Production you can use the Environment
if(Environment.PRODUCTION){
datasource('your_sencondary_datasource')
}
}
并且在您的Datasource.groovy的主要应用程序中,您需要像这样映射您的数据源
production{
dataSource {
<'your configs of primary ds'>
}
dataSource_you_secondary_datasource {
<'your configs to secondary ds'>
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句