Grails如何从域类的静态方法调用服务?

use*_*110 3 grails grails-domain-class

我在我的域类上有一个静态方法,并希望将所有业务逻辑从域类定义中提取到服务中,但我无法在域类静态方法中调用该服务,因为服务本身是在实例不是域类.

最好的解决方法是什么?

例如

class Foo {
   def fooService
   Integer count =0
   String name

   static void updateFoo(String name) {
      def foo = FindByName(name)
      fooService.beforeUpdateProcess(foo)   //fooService unavailable here  
      foo.count+=1
      foo.save()
   }
Run Code Online (Sandbox Code Playgroud)

}

Ana*_*oly 7

由于服务是bean,因此您将以通常从应用程序上下文访问任何bean的方式访问它们.Grails有一个Holders帮手:

FooService fooService = grails.util.Holders.applicationContext.getBean('fooService') as FooService
Run Code Online (Sandbox Code Playgroud)