所以我试图在一个扩展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
如何正确注入它?
答案 0 :(得分:1)
这是正确的方法。执行Injector.get().inject(this);
后,bean应该为非null。
我在我当前的应用程序中使用相同的内容。再次7.3.0。
以下是一些建议:
确保您的测试使用YourWicketApplication,或者如果他们使用模拟应用程序,请确保配置SpringComponentInjector。
确保@SpringBean
是Wicket-Spring的一个,因为Spring 5还添加了具有该名称的注释。虽然我怀疑你还在使用Spring 5快照。
请创建一个可以重现问题的迷你演示应用程序,我们将帮助调试它!