在wicket的AuthenticatedWebSession中启动spring bean

时间:2016-07-20 07:02:50

标签: spring wicket

所以我试图在一个扩展wicket的AuthenticatedWebSession的类中启动spring bean。

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);
    }

    ...
}

authenticationService保持为null,因为未启动spring bean。使用wicket版本7.3.0

如何正确注入它?

1 个答案:

答案 0 :(得分:1)

这是正确的方法。执行Injector.get().inject(this);后,bean应该为非null。

我在我当前的应用程序中使用相同的内容。再次7.3.0。

以下是一些建议:

  • 确保您的测试使用YourWicketApplication,或者如果他们使用模拟应用程序,请确保配置SpringComponentInjector。

  • 确保@SpringBean是Wicket-Spring的一个,因为Spring 5还添加了具有该名称的注释。虽然我怀疑你还在使用Spring 5快照。

请创建一个可以重现问题的迷你演示应用程序,我们将帮助调试它!