繁体   English   中英

Java Spring 4-为什么我需要在WebApplicationInitializer中手动扫描Bean

[英]Java Spring 4 - why i need manually scan for beans in WebApplicationInitializer

我正在尝试使用Spring 4.1和Wicket 6.18设置Web应用程序。 我想使用完整的代码方法。 我有两个用@Configuration@Bean注释的测试类。 我希望在Tomcat中启动我的应用程序时发现它们,但是除非我在自定义WebApplicationInitialzer 手动扫描基本软件包,否则它不起作用。 我的意思是手动调用AnnotationConfigWebApplicationContext.scan()

我浏览了很多有关基于代码的方法的教程,但没有看到他们这样做。 即使在正式的Spring文档中,他们也不会这样做。

我在做错什么我需要这个以及如何纠正它?

我的自定义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, "/*");
    }

}

@Aeseir @The Head Rush@Aeseir都是正确的。 我缺少rootContext.register(Appconfig.class)@ComponentScan 我什至可以进一步分享我的知识: 使用Java Conf而不是xml配置Spring Wicket :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM