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:)