2017-03-02 109 views
1

我正在嘗試將現有的動態Web項目轉移到Spring引導項目,並使用web.xml進行servlet映射。我知道spring會忽略web.xml文件,Spring應該使用現有的web.xml的正確方法是什麼?是的,我仍然需要堅持使用web.xml來完成這個項目。強制Spring引導在web.xml中使用servlet映射

我對此有點新,請指導我完成!謝謝!

回答

1

我想你需要堅持使用web.xml,因爲你的容器使用比3.0更舊版本的Servlet。

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

春季啓動使用的Servlet 3.0 API來初始化ServletContext的 (註冊的Servlet等),所以你不能在Servlet 2.5容器使用相同的應用出來 箱。然而,使用一些特殊工具可以在較老的容器上運行一個 Spring Boot應用程序。 如果包含org.springframework.boot:spring-boot-legacy作爲 依賴項(與Spring Boot的核心分開維護, 目前可在1.0.2.RELEASE中使用),所有您需要執行的操作是 創建一個web.xml並聲明上下文偵聽器來創建應用程序上下文以及您的過濾器和servlet。

+0

感謝您的輸入!我目前正在使用servlet 3.0和Tomcat 7.0.75。我堅持web.xml的原因是因爲它有很多servlet映射,我只是想先將它轉換爲spring boot項目。我有計劃用適當的替換當前的web.xml(servletcontainerinitializer)? – NatureWonder

相關問題