Инициирование Spring Bean в AuthenticatedWebSession калитки

Поэтому я пытаюсь инициировать Spring Bean в классе, который расширяет AuthenticatedWebSession wicket.

В 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 остается нулевым, поскольку bean-компонент Spring не был инициирован. Использование калитки версии 7.3.0

Есть идеи, как правильно его залить?

1 ответ

Решение

Это правильный путь. Боб должен быть ненулевым после Injector.get().inject(this); выполнен.

Я использую то же самое в моем текущем приложении. Снова 7.3.0.

Вот некоторые предложения:

  • Убедитесь, что ваши тесты используют YourWicketApplication или если они используют фиктивное приложение, то обязательно настройте SpringComponentInjector.

  • Удостоверься что @SpringBean это Wicket-Spring, потому что Spring 5 также добавил аннотацию с этим именем. Хотя я сомневаюсь, что вы используете Spring 5 снимки еще.

Пожалуйста, создайте мини-демонстрационное приложение, которое воспроизводит проблему, и мы поможем ее отладить!

Другие вопросы по тегам