2015-10-29 10 views
5

Sto cercando di imparare il boot di primavera e noto che ci sono due opzioni.spring-boot-starter-tomcat vs spring-boot-starter-web

  1. molla-boot-starter-web - che secondo la documentazione fornisce supporto per full-stack di sviluppo web, tra Tomcat e web-mvc

  2. molla-boot-starter-tomcat

Dal momento che # 1 supporta Tomcat, perché si vorrebbe usare # 2?

Quali sono le differenze?

Grazie

risposta

6

Dal # 1 supporta Tomcat perché uno vuole usare 2 #?

spring-boot-starter-web contiene spring-boot-starter-tomcat. spring-boot-starter-tomcat potrebbe essere utilizzato da solo se non è necessario il mvc di primavera (contenuto in spring-boot-starter-web).

Ecco la gerarchia delle dipendenze di spring-boot-starter-web:

enter image description here

Quali sono le differenze?

spring-boot-starter-web contiene dipendenze di primavera web (tra cui spring-boot-starter-tomcat):

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

spring-boot-starter-tomcat contiene tutto ciò che riguarda un gatto embdedded server:

core
el
logging
websocket

Che cosa succede se si desidera utilizzare Spring MVC senza il server Tomcat incorporato?

Basta escluderlo dalla dipendenza:

<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

Beh una risposta semplice è che non tutte le applicazioni Web sono applicazioni SpringMVC.Ad esempio, se desideri utilizzare JaxRS invece di avere applicazioni client che utilizzano RestTemplate e ti piace come interagiscono, non significa che non puoi usare spring boot o tomcat incorporato

Ecco un esempio di applicazione che utilizza spring-boot-starter-tomcat ma non spring-boot-starter-web

semplice applicazione Jersey nel bagagliaio primavera utilizzando spring-boot-starter-tomcat

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

È anche importante ricordare che tomcat non è l'unica opzione per un contenitore di servlet incorporato in avvio di primavera. È anche facile iniziare a usare il molo. E avendo spring-boot-starter-tomcat rende facile escludere tutti come un modulo, mentre se fossero tutti solo una parte della primavera-web sarebbe più lavoro per escludere le librerie di Tomcat per portare in spring-boot-starter-jersey invece

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

ho copiato questo codice da un'altra domanda SO qui.

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