扩展Spring的AbstractAnnotationConfigDispatcherServletInitializer会禁用我的应用程序日志记录

时间:2014-01-22 20:59:39

标签: spring spring-mvc logback

我在我的应用程序中使用Logback。到目前为止,我已经有了一个类实现WebApplicationInitializer,以便我的应用程序在没有web.xml的情况下启动。到目前为止一切正常,在我的控制台中可以看到日志记录。如果我更改了这个,以便我的类扩展AbstractAnnotationConfigDispatcherServletInitializer并且不再直接实现WebApplicationInitializer,则日志记录似乎完全关闭。我的控制台中没有任何记录。

我已经玩过它以确保,在两个实现之间切换并且它始终如此表现。有人见过这个吗?我不知道它会如何影响我的日志记录。

这是我的WebApplicationInitializer实现

public class AppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(Application.class);
        servletContext.addListener(new ContextLoaderListener(ctx));

        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/*");

        FilterRegistration.Dynamic hiddenHttpMethodFilter = servletContext.addFilter("hiddenHttpMethodFilter", HiddenHttpMethodFilter.class);
        hiddenHttpMethodFilter.addMappingForUrlPatterns(null, false, "/*");
    }
}

这是扩展AbstractAnnotationConfigDispatcherServletInitializer的版本

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {Application.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/*"};
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[] {new HiddenHttpMethodFilter()};
    }
}

在这两种情况下,应用程序运行正常,但使用我的应用程序初始化程序的第二个版本,我没有记录。

0 个答案:

没有答案