web-dev-qa-db-ja.com

spring-boot-starter-Tomcat対spring-boot-starter-web

私は春のブーツを学ぼうとしていますが、2つのオプションがあることに気づきました。

  1. spring-boot-starter-web-ドキュメントによると、Tomcatやweb-mvcなどのフルスタックWeb開発がサポートされます

  2. 春ブートスタータートムキャット

#1はTomcatをサポートしているので、なぜ#2を使用するのでしょうか?

違いは何ですか?

ありがとう

26
DavidR

#1はTomcatをサポートしているので、なぜ#2を使用するのでしょうか?

spring-boot-starter-webにはspring-boot-starter-Tomcatが含まれています。 spring-boot-starter-Tomcatは、Spring mvcが必要ない場合(spring-boot-starter-webに含まれる)、単独で使用できる可能性があります。

spring-boot-starter-webの依存関係の階層は次のとおりです:

enter image description here

違いは何ですか?

spring-boot-starter-webには、Spring Webの依存関係が含まれています(spring-boot-starter-Tomcatを含む):

spring-boot-starter
jackson
spring-core
spring-mvc
spring-boot-starter-Tomcat

spring-boot-starter-Tomcatには、組み込みのTomcatサーバーに関連するすべてが含まれています。

core
el
logging
websocket

Tomcatサーバーが組み込まれていないSpring MVCを使用する場合はどうなりますか?

依存関係から除外するだけです:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-Tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
30
ltalhouarne

簡単に言えば、すべてのWebアプリケーションがSpringMVCアプリケーションであるとは限りません。たとえば、代わりにJaxRSを使用したい場合、RestTemplateを使用するクライアントアプリケーションがあり、それらがどのように相互作用するかが好きでも、Spring Bootや組み込みTomcatを使用できないわけではありません。

以下は、spring-boot-starter-Tomcatを使用し、spring-boot-starter-webを使用しないアプリケーションの例です。

spring-boot-starter-Tomcatを使用した春のブーツのシンプルなジャージーアプリケーション

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-jersey

また、Tomcatは、Spring Bootの組み込みサーブレットコンテナの唯一のオプションではないことを覚えておくことが重要です。 jettyを使い始めるのも簡単です。また、spring-boot-starter-Tomcatを使用すると、すべてを1つのモジュールとして簡単に除外できますが、それらがすべてSpring-Webの一部である場合は、代わりにTomcatライブラリを除外してspring-boot-starter-jerseyを取り込む方が多くなります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-Tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

このコードを別のSOここの質問からコピーしました。

Spring-BootでJettyを設定する方法(簡単?)

6
Zergleb