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

时间:2016-12-10 20:21:49

标签: grails grails-domain-class

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

最好的解决方法是什么?

E.g。

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()
   }

}

1 个答案:

答案 0 :(得分:6)

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

FooService fooService = grails.util.Holders.applicationContext.getBean('fooService') as FooService