2016-12-10 6 views
2

私は自分のドメインクラスに静的メソッドを持ち、ドメインクラス定義からすべてのビジネスロジックをサービスに取り込みたいが、サービス自体が定義されているので、ドメインクラス静的メソッドでサービスを呼び出すことはできないインスタンスのドメインクラスではないGrailsドメインクラスの静的メソッドからサービスを呼び出す方法は?

最高の解決方法を教えてください。

など。

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.beforeUpdateProcess(FOO)であり、その場合にはfooServiceの静的メソッドであることを考えています。それはそれを扱う正しい方法ですか? – user1023110

+1

一般的に、特にドメインやサービスでは静的メソッドを使用しないことをお勧めします。 – Demian

答えて

5

サービスは豆なので、あなたはそれらを使用すると、一般的にアプリケーションコンテキストからすべてのBeanにアクセスする方法にアクセスします。 Grailsのは、このためのホルダーヘルパーを持っている:

FooService fooService = grails.util.Holders.applicationContext.getBean('fooService') as FooService 
関連する問題