2017-04-05 6 views
7

現在、プロジェクトをJava EEからSpringブートプロジェクトに移動しようとしています。 しかし、ディスパッチャーサーブレットとweb.xmlで密かに混乱してしまい、web.xmlがもうプロジェクトによって読み込まれなくなったようです。現在のプロジェクトは、私のweb.xmlファイルでのTomcat 7SpringブートのDispatcherServletと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構成で中継していないし、それが自動的にディスパッチャサーブレットと同等に設定されます。 How to add a filter class in Spring Boot?
  2. mavenを使用し、gradleを使用しない場合、スプリングブートプロジェクトの唯一のXMLはpom.xmlである必要があります。春のブートと一緒に行く方法は、すべてのXML設定、web.xmlなどを春のブートの自動設定+あなたのJava設定に移動することです。

春のブートは、Javaの設定ですべてを行い、その主体に従うと非常に効果的です。私の経験から、XML設定とレガシースプリングのマージを開始すると、自動設定プロセスが破られ、新しいスプリングブーツのベストプラクティスに準拠するためにできるだけ多くのことを試みることができます。

+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. です。構成クラスに移すことができるインターセプターがある場合は、このクラスを使用します。

関連する問題