我的项目副本在 HibernateGrailsPlugin.groovy 中包含以下代码段:
def doWithDynamicMethods = {
def dynamicMethods = HibernatePluginSupport.doWithDynamicMethods
dynamicMethods.delegate = delegate
dynamicMethods.call(it)
// aids in generating appropriate documentation in plugin.xml since
// domain class methods are lazily loaded we initialize them here
if(plugin.basePlugin) {
try {
def clz = application.classLoader.loadClass("org.grails.Behavior")
clz.count()
}
catch(e) {
// ignore
}
}
}
我是 grails/groovy 的新手,但如果我理解正确,这个闭包将动态方法的添加/删除委托给 HibernatePluginSupport 类的 doWithDynamicMethods 闭包。似乎 HibernatePluginSupport 类是用其余的 grails 特定代码编译的,如果 HibernatePluginSupport 的代码存在于我项目的插件副本中,我可以轻松地根据我的需要对其进行自定义。我的问题是,如何修改特定类的自动生成方法?我看到的唯一方法是重写 groovy 文件中的 doWithDynamicMethods 闭包,但我不想这样做,因为我只是为某些域类定制它。更具体地说,如何删除/替换由“HibernatePluginSupport.doWithDynamicMethods”闭包添加的动态方法?