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

을 .: 위해 Grails의는 홀더 도우미가 있습니다. 그게 옳은 방법인가요? – user1023110

+1

일반적으로 정적 방법을 사용하지 말 것을 제안합니다. 특히 도메인이나 서비스에서. – Demian

답변

5

, 당신은 당신이 일반적으로 응용 프로그램 컨텍스트에서 모든 Bean에 액세스하는 방법과 접근 것이다. 이것이 내가 beforeUpdateProcess 자체가 솔루션은 단순히 FooService.beforeUpdateProcess (foo는) 인 경우 fooService의 정적 메소드되어야한다고 생각하고

FooService fooService = grails.util.Holders.applicationContext.getBean('fooService') as FooService 
관련 문제