我的域类上有一个静态方法,并希望将所有业务逻辑从域类定义中提取到服务中,但我不能在域类静态方法中调用该服务,因为服务本身是在实例上定义而不是域类。
最好的解决方法是什么?
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 :(得分:6)
由于服务是bean,因此您将以通常从应用程序上下文访问任何bean的方式访问它们。 Grails有一个Holders帮手。:
FooService fooService = grails.util.Holders.applicationContext.getBean('fooService') as FooService