2017-04-05 105 views
7

我目前正試圖將我的項目從Java EE移至Spring Boot項目。 但是,我已經在調度程序servlet和web.xml的部分被困住了,似乎web.xml不再被項目讀取。目前項目在Tomcat 7Spring Boot中的DispatcherServlet和web.xml

運行在我web.xml文件,我有很多的servletservlet-mappingfilterfilter mapping,我真的不知道該怎麼辦的調度映射。

我已經把它貼在下面我web.xml的樣品和版本爲2.5。

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app metadata-complete="true" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
 
    <display-name>displayName</display-name> 
 
    <description>description</description> 
 
    <resource-ref> 
 
    ... 
 
    </resource-ref> 
 
    <filter> 
 
    <filter-name>Some Filter Name</filter-name> 
 
    <filter-class>Some Filter Class</filter-class> 
 
    <init-param> 
 
     <param-name>Some Param Name</param-name> 
 
     <param-value>Some Value</param-value> 
 
    </init-param> 
 
    </filter> 
 
    <filter-mapping> 
 
    <filter-name>Some Filter Name</filter-name> 
 
    <url-pattern>Some url-pattern</url-pattern> 
 
    </filter-mapping> 
 
    <context-param> 
 
    <param-name>Some Param Name</param-name> 
 
    <param-value>Some Param Value</param-value> 
 
    </context-param> 
 
    <servlet> 
 
    <servlet-name>Some Servlet Name</servlet-name> 
 
    <servlet-class>Some Servlet Class</servlet-class> 
 
    </servlet> 
 
    <servlet-mapping> 
 
    <servlet-name>Some Servlet Name</servlet-name> 
 
    <url-pattern>Some Url Pattern</url-pattern> 
 
    </servlet-mapping> 
 
</web-app>

QNS:

  1. 我應該將所有的東西在我的web.xml依靠彈簧調度,如果是我怎麼能做到這一點?
  2. 正在擺脫web.xml春季啓動項目的路要走嗎?

任何人都可以請指導我一起在這裏?謝謝!!

回答

5
  1. 是的,彈簧啓動不再在xml配置上進行中繼,它自動配置與調度程序servlet的等效項。你可以按照下面的鏈接瞭解如何註冊您的過濾器:How to add a filter class in Spring Boot?
  2. 如果你使用Maven和不gradle這個,在春季啓動項目的唯一XML應該是pom.xml。 Spring引導的方式是將所有的xml配置,web.xml等移動到spring引導的自動配置+你的java配置。

當你在java配置中做所有事情並遵循它的主體時,Spring引導工作的很好。根據我的經驗,當您開始合併XML配置和傳統彈簧時,它開始打破自動配置過程,並且儘可能多地嘗試遵守新的spring引導最佳實踐。

+0

感謝澄清! 所以我正確地說,我需要將'web.xml'中每個標記的所有值都註冊到我的'@ SpringBootApplication'類中? – NatureWonder

+1

最好保持'@ SpringBootApplication'類的清潔。例如在名爲'config'的'@ SpringBootApplication'的包下創建一個新包,例如創建一個名爲'FiltersConfiguration'的'@ Configuration'註解類,並開始將過濾器註冊爲'@ Bean'註釋的方法。這樣你的代碼就會更清晰,更易於閱讀。您可以根據需要創建更多'@ Configuration'類。 – Tom

0
  1. 你可以把你的web.xml,但它需要在web.xml添加

    <listener> 
        <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class> 
    </listener> 
    

    。並且,需要依賴pom.xml

  2. 所有監聽器類,過濾器轉換在Java類。這個類是@Configuration.

  3. 如果你有一個可以移動到配置類的截擊。

相關問題