2017-03-02 11 views
1

現在、私は既存の動的WebプロジェクトをSpringブートプロジェクトに移行しようとしており、サーブレットマッピングにweb.xmlを使用しています。 Springがweb.xmlファイルを無視することは理解していますが、Springが既存のweb.xmlを使用する正しい方法は何でしょうか?そして、はい、私はまだこのプロジェクトにweb.xmlを使用することに固執する必要があります。web.xmlでサーブレットマッピングを強制的に使用する

私はこれにちょっと新しく、私をガイドしてください!ありがとう!

答えて

1

あなたのコンテナが3.0よりも古いバージョンのサーブレットを使用しているため、web.xmlを使用する必要があるとします。

SpringブートはServlet 3.0で構築されています。メインクラスを更新してSpringBootServletInitializerを拡張し、SpringにServlet 3.0サポートを使用するよう指示するconfigureメソッドをオーバーライドする必要があります。 Tomcatのような組み込みコンテナにはServlet 3.0が必要です。そのため、組み込みコンテナの開発プロセス(JUnitテストを含む)中にプロジェクトを開始したい場合は、私が知っているところからweb.xmlをServlet 3.0に書き直すしかありませんjava config。しかし、実際に古いコンテナにあなたのアプリケーションを展開したい場合は、spring-boot-legacyモジュールを使用しても構いません。古いコンテナにweb.xmlを使用することができます。あなたがしなければならないのは、web.xmlに org.springframework.boot.legacy.context.web.SpringBootContextLoaderListenerを追加することだけです。

古いコンテナに戦争を展開する方法の詳細については、Spring Bootのofficial documentationを参照してください。

春ブートのServletContext を初期化するために、サーブレット3.0のAPIを使用しています(サーブレットなどを登録する)ので、あなたは、Servlet 2.5コンテナ内 の外箱を同じアプリケーションを使用することはできません。ただし、特殊なツールを使用して古いコンテナに Spring Bootアプリケーションを実行することは可能です。 org.springframework.boot:spring-boot-legacyを の依存関係(Spring Bootのコアとは別に保持され、現在は1.0.2.RELEASEで利用可能な )として含めると、 を作成する必要がありますweb.xmlを開き、コンテキストリスナーを宣言して アプリケーションコンテキストとフィルタとサーブレットを作成します。

+0

入力いただきありがとうございます。現在、サーブレット3.0とTomcat 7.0.75を使用しています。私がweb.xmlに固執している理由は、サーブレットのマッピングがたくさんあり、最初にそれをSpringブートプロジェクトに変換したいからです。現在のweb.xmlを(servletcontainerinitializer)のような適切なものに置き換える予定はありますか? – NatureWonder

関連する問題