2016-12-10 8 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 (Foo). Это правильный способ справиться с этим? – user1023110

+1

Я бы предложил не использовать статические методы в целом, и особенно в доменах или службах. – Demian

ответ

5

Поскольку услуги бобы, вы бы получить доступ к ним так, как вы бы обобщенно доступ к любому компоненту из контекста приложения. Grails имеет вспомогательный держатели для этого .:

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