如何在Spring启动中迁移AbstractAnnotationConfigDispatcherServletInitializer?

时间:2017-09-13 08:17:12

标签: java spring-mvc spring-boot

您好我刚开始使用spring boot我正在尝试将基于maven的Web应用程序迁移到spring boot。 我能够迁移除下面提到的类之外的所有其他配置文件: - ApplicationInitializer

public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

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

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

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

    @Override
    protected Filter[] getServletFilters() {
        Filter [] singleton = { new CORSFilter()};
        return singleton;
    }

}

我找到了一个与此Reference link类似的参考链接,它做了同样的工作,但我不知道如何为我的情况做这个。 任何人都可以帮我弄清楚如何使用调度程序servlet注册我的过滤器。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

要使用SpringBootServletInitializer(即您所指的)向调度员注册过滤器,您需要添加FilterRegistrationBean。可能看起来像这样:

public class Application extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure( SpringApplicationBuilder application )
    {
        return application.sources( Application.class );
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean( ServletRegistrationBean servletRegistrationBean )
    {
        return new FilterRegistrationBean( new CORSFilter(), servletRegistrationBean );
    }

    public static void main( String[] args )
    {
        SpringApplication.run( Application.class, args );
    }
}

请注意,上面的代码替换了您的ApplicationInitializer