私のプロジェクトのコピーには、 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」クロージャーによって追加された動的メソッドを削除/置換するにはどうすればよいですか?