Java Spring 4 - почему мне нужно вручную сканировать бины в WebApplicationInitializer

Я пытаюсь настроить веб-приложение с Spring 4.1 и Wicket 6.18. Я хочу использовать подход с полным кодом. У меня есть два тестовых класса с пометкой @Configuration и с @Bean, Я хочу, чтобы они были обнаружены при запуске моего приложения в Tomcat, но оно не работает, если я не сканирую базовый пакет вручную в своем пользовательском WebApplicationInitialzer, Под вручную я имею в виду вызвать AnnotationConfigWebApplicationContext.scan ().

Я просмотрел немало учебников о подходе, основанном на коде, и не видел, чтобы они это делали. Даже в официальных весенних документах они этого не делают.

Что я делаю не так, что мне это нужно и как это исправить?

Мой обычай WebApplicationInitialzer выглядит так:

public class WebAppInitializer implements WebApplicationInitializer {

    private static final Logger logger = LoggerFactory.getLogger(WebAppInitializer.class);

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        container.addListener(new ContextLoaderListener(context));

        context.scan("pl.myhouse"); //why do i need this???

        FilterRegistration filter = container.addFilter("wicket.myproject", WicketFilter.class);
        filter.setInitParameter("applicationClassName", WicketApplication.class.getName());
        filter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, "/*");
        filter.addMappingForUrlPatterns(null, false, "/*");
    }

}

1 ответ

Решение

Вы оба @The Head Rush а также @Aeseir верны. Я скучал по rootContext.register(Appconfig.class) так же хорошо как @ComponentScan, Я даже мог бы поделиться своими знаниями дальше: настройка Spring Wicket с использованием Java Conf вместо xml:)

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