2015-10-29 5 views
5

Я пытаюсь изучить Spring boot, и я замечаю, что есть два варианта.spring-boot-starter-tomcat vs spring-boot-starter-web

  1. весна-загрузки-стартер-веб - который в соответствии с Документами дает поддержку веб-разработки полного стека, включая Tomcat и веб-Mvc

  2. весна-загрузки-стартер-кот

С # 1 поддерживает Tomcat, почему нужно использовать # 2?

В чем разница?

Благодаря

ответ

6

С # 1 поддерживает Tomcat, почему бы один хотите использовать # 2?

spring-boot-starter-web содержит spring-boot-starter-tomcat. spring-boot-starter-tomcat может быть использован сам по себе, если весенний mvc не нужен (содержится в spring-boot-starter-web).

Вот иерархия зависимость spring-boot-starter-web:

enter image description here

Каковы различия?

spring-boot-starter-web содержит веб-зависимости пружинные (включая spring-boot-starter-tomcat):

spring-boot-starter
jackson
spring-core
spring-mvc
spring-boot-starter-tomcat

spring-boot-starter-tomcat содержит все, что связано с embdedded котом Сервер:

core
el
logging
websocket

Что делать, если вы хотите использовать Spring MVC без встроенного сервера Tomcat?

Просто исключить его из зависимости:

<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> 
2

Ну простой ответ в том, что не все веб-приложения SpringMVC приложения.Например, если вы хотите использовать JaxRS, возможно, у вас есть клиентские приложения, которые используют RestTemplate, и вам нравится, как они взаимодействуют, это не значит, что вы не можете использовать весеннюю загрузку или встроенный 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-starter-tomcat позволяет легко исключить все как один модуль, а если бы они были всего лишь частью весенне-сети было бы больше работы, чтобы исключить библиотеки 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> 

Я скопировал этот код из еще один вопрос.

How to configure Jetty in spring-boot (easily?)

Смежные вопросы