【发布时间】:2010-02-11 20:20:54
【问题描述】:
我有几个使用 Spring BlazeDS 集成从 Flex 代码调用的 Grails 服务。我想使用 groovy 元类添加一些通用调试日志记录。我在引导类中有以下内容:
class MyBootStrap {
def grailsApplication
def init = { servletContext ->
initServiceCallLogging()
}
def destroy = {
}
private def initServiceCallLogging() {
grailsApplication.serviceClasses.each { serviceClass ->
serviceClass.metaClass.invokeMethod = { name, args ->
log.debug "Method $name invoked"
def metaMethod = delegate.metaClass.getMetaMethod(name, args)
def result = metaMethod.invoke(delegate, args)
return result
}
}
}
}
只要从例如调用 Service 方法就可以正常工作。一个 Grails 控制器或服务,但当直接从 Flex(通过 BlazeDS)调用时,方法调用不会被拦截。
任何人知道如何解决这个问题,或者这不是通过元编程实现的吗?应该使用 Spring AOP 吗?
谢谢
【问题讨论】:
-
Flex(通过 BlazeDS)是否使用不同的类加载器? groovy 中的元编程与加载类的 GroovyClassLoader 相关联。
标签: apache-flex grails groovy metaprogramming