我已经创建了一个负责RDBMS访问辅助数据源的插件,这样我们就会从要使用它的应用程序中隐藏域和服务层(它阻止他们修改该源)。我将插件发布到artifactory,然后将其成功导入到我的应用程序中。但是,插件使用的数据源文件被从包装中排除,并且在调用插件中的服务方法时,它试图对我的默认数据源执行这些查询。
由于
更新
下面提供的答案可行,基本上就是多个数据源在Grails中的工作方式。唯一的缺点是,当我开发插件本身并且我想将它作为应用程序运行以确保它能够实现我想要的格式,而grails期望的数据源必须被称为 dataSource 所以我有
注释掉static mapping = {
// datasource 'dataSource_lookup'
}
以便能够运行它。然后,当我看到每件事情都很好,因为我希望并且我想要发布插件时,我必须查看我的所有域文件并取消注释上面的行,以便当插件导入我的主应用程序时它将有一个参考到辅助数据源。然而,这非常非常痛苦和缓慢。
有更好的方法吗?为什么必须将默认数据源称为 dataSource ?可以改变吗?
答案 0 :(得分:2)
在你的插件的域类中,你必须做这样的事情
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'>
}
}