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

最好的解决方法是什么?

例如。

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

}

最佳答案

由于服务是bean,因此您可以像从应用程序上下文中一般访问任何bean的方式访问它们。 Grails为此提供了Holder助手。

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

关于grails - Grails如何从域类的静态方法调用服务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41079912/

10-10 17:22