2016-07-20 4 views
0

그래서 wicket의 AuthenticatedWebSession을 확장하는 클래스에서 스프링 빈을 초기화하려고합니다.wicket의 AuthenticatedWebSession에서 봄 빈 시작하기

stakcoverflow에는 몇 가지 답변이 있지만 나에게 도움이되지 못합니다.

public class AuthWebSession extends AuthenticatedWebSession { 
    @SpringBean(name = "authenticationService") 
    private AuthenticationService authenticationService; 

    public AuthWebSession(Request request) { 
     super(request); 
     Injector.get().inject(this); 
    } 

    @Override 
    protected boolean authenticate(String username, String password) { 
     //authenticationService is null here as the spring bean did not initiate 
     authenticationService.auth(username, password); 
    } 

    ... 
} 

authentication bean은 스프링 bean이 시작되지 않았으므로 널입니다. 개찰판 버전 7.3.0 사용

정확하게 주입하는 방법에 대한 아이디어가 있습니까?

+0

검사 할 패키지를 사용하면서 XML 파일에''이 있습니까? – VinayVeluri

+0

Bean을'extends Base' 클래스에 포함 시키면 bean이 발견됩니다. 따라서 문제는 component-scan과 관련되어서는 안됩니까? – Noripsni

답변

1

올바른 방법입니다. Injector.get().inject(this);이 실행 된 후에 bean은 널이 아니어야합니다.

동일한 내용을 현재 사용중입니다. 다시 7.3.0.

여기에 몇 가지 제안은 다음과 같습니다

  • 이 테스트 YourWicketApplication를 사용하거나 모의 응용 프로그램을 사용하는 경우 다음 SpringComponentInjector을 구성 할 수 있는지 확인해야합니다.

  • 스프링 5가 해당 이름의 주석을 추가했기 때문에 @SpringBean이 Wicket-Spring의 글꼴인지 확인하십시오. 나는 아직 스프링 5 스냅 샷을 사용하고 있는지 의심 스럽지만.

문제를 재현하는 데모 애플리케이션을 만들어주십시오. 디버그에 도움이됩니다.

+0

빈은 정확해야합니다.'import org.apache.wicket.spring.injection.annot.SpringBean;' – Noripsni

+0

네가 옳다. 그것은 null이 아니어야하고 그것은 ... 단위 테스트를 통해 시작했지만 부두로 달릴 때는 잘 작동합니다. 그러나 문제는 여전히 단위 테스트 (조롱이 아닌)와 함께 작동하는 데 필요하므로 지속됩니다. – Noripsni

+0

테스트에 SpringComponentInjector가 설정되어 있는지 확인하십시오. 아마도 WicketTester는 다른 Application 인스턴스를 사용합니다. MockApplication은 런타임에 사용하는 MockApplication 대신 사용됩니다. –