是否可以向Groovy类添加另一个(链接)invokeMethod?

是否可以向Groovy类添加另一个(链接)invokeMethod?,groovy,griffon,Groovy,Griffon,我想通过使用invokeMethod()在Griffon的控制器中执行AOP,例如:在所有Griffon控制器的特定方法中,将开始事务建议添加到“before”联合点,并将事务建议提交到“after”联合点 我还没有验证这一点,但我担心框架已经为控制器类提供了invokeMethod()。我是否可以添加一个新的invokeMethod(),而不影响Groovy类中先前定义的invokeMethod()?如何做到这一点?Griffon确实强制控制器实现invokeMethod,您可以提供自己的方法

我想通过使用
invokeMethod()
在Griffon的控制器中执行AOP,例如:在所有Griffon控制器的特定方法中,将开始事务建议添加到“before”联合点,并将事务建议提交到“after”联合点


我还没有验证这一点,但我担心框架已经为控制器类提供了
invokeMethod()
。我是否可以添加一个新的
invokeMethod()
,而不影响Groovy类中先前定义的
invokeMethod()
?如何做到这一点?

Griffon确实强制控制器实现
invokeMethod
,您可以提供自己的方法。 另一种选择是提供
grifoncontrolleractionmanager
接口的自定义实现

有关此功能的更多信息,请参阅Griffon指南


如何在Griffon控制器中提供我自己的
invokeMethod
?如果我这样做可以吗:
app.artifactManager.getClassOfType('controller')。每个{GriffonClass gc->gc.metaClass.invokeMethod=newInvokeMethodWithWrapper}
?感谢您的帮助。我已经研究了您的答案中提到的另一个备选方案,
GriffonControllerActionManager
。它似乎与视图直接相关,我需要为控制器中的每个操作(如果使用swing插件)提供一个
javax.swing.AbstractAction
实例。这将解决我的问题,尽管我只想为控制器的操作提供自动db事务,而不考虑ui工具包。或者我应该对控制器中的每个带注释的闭包和方法进行AST转换?一个选项是包装UI工具包提供的GriffonControllerActionManager。另一种方法是使用AST转换,可以是局部的,也可以是全局的。如果使用AST选项,请注意由执行的线程注入