我目前正在尝试将现有的动态Web项目转移到Spring启动项目,它使用web.xml进行servlet映射。我知道spring会忽略web.xml文件,春天使用现有web.xml的正确方法应该是什么?是的,我仍然需要坚持使用web.xml来完成这个项目。
我对此有点新意,请指导我!谢谢!
答案 0 :(得分:1)
我认为您需要坚持使用web.xml,因为您的容器使用的是旧版本的Servlet而不是3.0。
Spring Boot基于Servlet 3.0构建。您必须更新主类以扩展SpringBootServletInitializer并覆盖configure方法,该方法告诉spring使用其Servlet 3.0支持。像Tomcat这样的嵌入式容器需要Servlet 3.0,所以如果你想在嵌入式容器的开发过程中启动项目(包括JUnit测试),我认为,据我所知,唯一的方法就是将web.xml重写为Servlet 3.0 java配置。但是,如果您真的想在旧容器中部署应用程序,您仍然可以使用spring-boot-legacy
模块。它允许您将web.xml用于旧容器;你唯一要做的就是添加
您的web.xml中的org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener
。
有关在旧容器中部署战争的更多信息,请查看Spring Boot的official documentation。
Spring Boot使用Servlet 3.0 API初始化ServletContext (注册Servlets等),因此您不能使用相同的应用程序 Servlet 2.5容器中的框。但是可以运行一个 带有一些特殊工具的旧容器上的Spring Boot应用程序。 如果你包括org.springframework.boot:spring-boot-legacy作为 依赖(分别维护到Spring Boot的核心和 目前可在1.0.2.RELEASE获得,您需要做的就是 创建一个web.xml并声明一个上下文监听器来创建 应用程序上下文以及过滤器和servlet。
答案 1 :(得分:0)
这是一个非常古老的问题,但我目前处于相同的情况,我将分享我的经验。
我扩展了SpringBootServletInitializer类来创建我的@SpringBootApplication,默认情况下它将包含你的web.xml配置。我仍然可以声明或编辑现有的servlet映射,它将被考虑在内。