2016-12-10 79 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