【问题标题】:Grails How to call service from static method of domain class?Grails如何从域类的静态方法调用服务?
【发布时间】:2016-12-10 20:21:48
【问题描述】:

我的域类上有一个静态方法,想把域类定义中的所有业务逻辑都放到服务中,但是我不能在域类静态方法中调用服务,因为服务本身就是在实例而不是域类上定义。

最好的解决办法是什么?

例如

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

}

【问题讨论】:

  • 我认为 beforeUpdateProcess 本身应该是 fooService 的静态方法,在这种情况下,解决方案就是 FooService.beforeUpdateProcess(foo)。这是正确的处理方式吗?
  • 我建议一般不要使用静态方法,尤其是在域或服务中。

标签: grails grails-domain-class


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2011-06-29
    • 2017-03-02
    • 1970-01-01
    • 2010-10-10
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多