私の目標は、関数が事前定義され、インターセプターが実行時間とクロージャー評価の結果をログアウトするバインディングを使用して groovy スクリプトを実行することです。私のサンプルコードは次のとおりです。
binding.login = { ->
binding.event.appname=='login'
} def gse = new GroovyScriptEngine("src/main/resources/rules")
gse.run('DSL.groovy', binding)
スクリプト内で login メソッドを呼び出しています。MetaClass を使用してインターセプトする方法を理解できないことを除いて、すべてが機能します。私の試みのような
Binding.metaClass.invokeMethod = { String name, args ->
println ("Call to $name intercepted... ")
動作しませんでした。後で、クロージャーはバインディングのプロパティであり、メソッドではないことがわかりました。このシナリオでインターセプトを実行する方法とその方法はありますか? メタクラスの正しいオブジェクトは何ですか? 注記のとおり、私のクロージャーは別のネストされたクロージャー内で実行されました。ありがとう