【发布时间】:2014-11-21 08:56:22
【问题描述】:
我试图找到一种方法来更改作为生产中的战争部署的 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。
提前致谢!
佩德罗
【问题讨论】:
-
拥有 web.xml 的事实并不意味着 ServletContainerInitializer 不再工作。只需将 web.xml 放入文件中,其中只有一个
welcome-page标记。
标签: spring tomcat7 spring-boot