是否可以拦截应用程序中调用的所有方法?我想和他们一起做一些事情,然后让他们执行。我试图覆盖这种行为Object.metaClass.invokeMethod
,但似乎不起作用。
这可行吗?
你看过吗Groovy AOP http://github.com/chanwit/groovy-aop/tree/master?数量很少文档 http://github.com/chanwit/groovy-aop/blob/77f3a17a99d22566ffbcd78e742441b53b5be9e5/userguide/01-Introduction.textile,但它允许您以与 AspectJ 概念上类似的方式定义切入点和建议。看看单元测试 http://github.com/chanwit/groovy-aop/tree/77f3a17a99d22566ffbcd78e742441b53b5be9e5/src/test/groovy/org/codehaus/groovy/aop/tests更多例子
下面的示例将匹配对所有编织类型的所有调用,并在继续之前应用建议:
// aspect MyAspect
class MyAspect {
static aspect = {
//match all calls to all calls to all types in all packages
def pc = pcall("*.*.*")
//apply around advice to the matched calls
around(pc) { ctx ->
println ctx.args[0]
println ctx.args.length
return proceed(ctx.args)
}
}
}
// class T
class T {
def test() {
println "hello"
}
}
// Script starts here
weave MyAspect.class
new T().test()
unweave MyAspect.class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)