2016-12-10 45 views
2

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

最好的解决办法是什么?

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

}

+0

我在想,beforeUpdateProcess本身应该FooService接口的静态方法在这种情况下,解决的方法就是FooService.beforeUpdateProcess(富)。这是处理它的正确方法吗? – user1023110

+1

我建议一般不要使用静态方法,特别是在域或服务中。 – Demian

回答

5

由于服务是豆类,你会访问他们,你一般会从应用程序上下文访问任何豆的方式。 Grails的有一个支架帮手此.:

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