1

我很难访问 doWithDynamicMethod 中的特定服务。

def doWithDynamicMethods = { ctx ->
        def nodeDriverProxy  = application.getServiceClass('NodeDriverProxyService')
        application.domainClasses.each{ cClass ->
            delegate.log.warn('cClass: ' + cClass.toString())
            cClass.metaClass.cacheInstance = { domainIns->
                delegate.log.warn "domain is being cached id: ? with version ?"
                nodeDriverProxy.registerUpdate(domainIns.id, domainIns.version)
            }

变量 nodeDriveProxy 为空或访问“application.serviceClasses”时出现异常我做错了什么?谢谢你

4

1 回答 1

2

你不想要GrailsServiceClass,你想要服务实例。你有ctx变量是 Spring ApplicationContext,所以它会是

def doWithDynamicMethods = { ctx ->
   def service = ctx.nodeDriverProxyService
   application.domainClasses.each { cClass ->
      delegate.log.warn('cClass: ' + cClass.toString())
      cClass.metaClass.cacheInstance = { domainIns ->
         delegate.log.warn "domain is being cached id: ? with version ?"
         service.registerUpdate(domainIns.id, domainIns.version)
      }
   }
}
于 2013-04-14T02:20:11.150 回答