一尘不染

更改部署为war的spring-boot应用程序的默认欢迎页面

spring-boot

我试图找到一种方法来更改作为生产环境中的战争而部署的spring-boot应用程序的默认欢迎页面,但是如果没有web.xml文件,我将找不到一种方法。

根据文档,我们可以使用带有以下代码的EmbeddedServletContainerFactory来做到这一点:

@Bean
public EmbeddedServletContainerFactory servletContainer() {

    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();

    TomcatContextCustomizer contextCustomizer = new TomcatContextCustomizer() {
        @Override
        public void customize(Context context) {
            context.addWelcomeFile("/<new welcome file>");
        }
    };
    factory.addContextCustomizers(contextCustomizer);

    return factory;
}

虽然,当我们创建一个war文件并将其部署到tomcat而不使用嵌入式Tomcat时,它没有做任何事情。

任何的想法?如果确实需要添加一个web.xml文件,我们该如何做并且仍然使用spring boot?我们是否应该将Application
bean(带有main方法)指定为DispatcherServlet的应用程序上下文?该文档对此不太清楚。

较早的Servlet容器不支持Servlet
3.0中使用的ServletContextInitializer引导过程。您仍然可以在这些容器中使用Spring和Spring
Boot,但是您将需要向应用程序中添加web.xml并将其配置为通过DispatcherServlet加载ApplicationContext。

提前致谢!


阅读 283

收藏
2020-05-30

共1个答案

一尘不染

这并不难…您只需要转发默认映射…

@Configuration
public class DefaultView extends WebMvcConfigurerAdapter{

    @Override
    public void addViewControllers( ViewControllerRegistry registry ) {
        registry.addViewController( "/" ).setViewName( "forward:/yourpage.html" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
        super.addViewControllers( registry );
    }
}
2020-05-30