2014-06-18 1 views
1

이전에 본 적이 있지만 지금은 아무 것도 찾을 수 없습니다. 나는이 작업을 수행 할 때 :springSecurityService의 기본 필드 값

는 컴파일의 끝으로 다음과 같은 오류가
class Foo { 

    def springSecurityService 
    User userInstance = springSecurityService.currentUser 

} 

내가 얻을 :

은 는 는
는 는

은 널 객체에 속성을 '경우 CurrentUser'가져올 수 없습니다

은 내가 설정할 수 없습니다 서비스가있는 기본 사용자?

  • Grails 2.2.0.
  • Foo은 도메인 클래스입니다.

편집 나는 javax.annotations.PostConstruct와 함께 아래의 솔루션을하려고했으나 주석이 메서드가 호출되지 않습니다. 나는 전화가 안되는 println 문을 넣기 때문에 호출되는 것 같지 않습니다. 내 수업을 new Foo()으로 인스턴스화하고 있습니다.

답변

2

springSecurityService 이전 userInstance 종속성 주입했다 설정하려고하고 있기 때문에 코드가 작동하지 않습니다이 대신

import javax.annotation.PostConstruct 

class Foo { 

    def springSecurityService 
    User userInstance 

    @PostConstruct 
    private void init() { 
     userInstance = springSecurityService.currentUser 
    } 
} 

이유는보십시오.

src/groovy의 클래스 인 경우 Foo이 도메인 클래스라고 가정합니다. 이러한 클래스는 종속성 주입을받지 않기 때문에이 방법이 작동하지 않습니다.

+0

예, 도메인 클래스입니다. 나는 의존성 주입이 아직 일어나지 않았고 가장 좋은 해결 방법이 무엇인지 확신 할 수 없다는 결론에 이르렀습니다. 감사! –

+0

허. 글쎄, 나는 컴파일 오류를 얻지 못한다. 그러나'init()'은 절대로 호출되지 않는다 : | –

+0

@CharlesWood 'springSecurityService'에서 항상 액세스 할 수 있다는 이유만으로도 현재 사용자를 필드에 저장해야하는 이유는 무엇입니까? –