spring-boot-starter-web有兩個(gè)重要功能:
與Web開發(fā)兼容 自動(dòng)配置
如果要開發(fā)Web應(yīng)用程序,則需要在pom.xml文件中添加以下依賴項(xiàng):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> </dependency>
Spring web的啟動(dòng)程序使用Spring MVC,REST和Tomcat作為默認(rèn)的嵌入式服務(wù)器。單個(gè)spring-boot-starter-web依賴關(guān)系可傳遞地獲取與Web開發(fā)相關(guān)的所有依賴關(guān)系。它還減少了構(gòu)建依賴項(xiàng)計(jì)數(shù)。 spring-boot-starter-web可傳遞地取決于以下內(nèi)容:
org.springframework.boot: spring-boot-starter org.springframework.boot: spring-boot-starter-tomcat org.springframework.boot: spring-boot-starter-validation com.fasterxml.jackson.core: jackson-databind org.springframework: spring-web org.springframework: spring-webmvc
默認(rèn)情況下,spring-boot-starter-web包含以下tomcat服務(wù)器依賴項(xiàng):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.0.0.RELEASE</version> <scope>compile</scope> </dependency>
spring-boot-starter-web自動(dòng)配置Web開發(fā)所需的以下各項(xiàng):
調(diào)度程序Servlet 錯(cuò)誤頁(yè)面 用于管理靜態(tài)依賴項(xiàng)的Web JAR 嵌入式servlet容器
每個(gè)Spring Boot應(yīng)用程序都包含一個(gè)嵌入式服務(wù)器。嵌入式服務(wù)器被嵌入為可部署應(yīng)用程序的一部分。嵌入式服務(wù)器的優(yōu)點(diǎn)是,我們不需要在環(huán)境中預(yù)安裝服務(wù)器。使用Spring Boot,默認(rèn)的嵌入式服務(wù)器為 Tomcat 。 Spring Boot還支持另外兩個(gè)嵌入式服務(wù)器:
Jetty服務(wù)器 Undertow服務(wù)器
對(duì)于 servlet堆棧應(yīng)用程序, spring-boot-starter-web 通過(guò)包含 spring-boot-starter-tomcat 來(lái)包含 Tomcat ,但是我們可以使用 spring-boot-starter-jetty 或 spring -boot-starter-undertow 。
對(duì)于 反應(yīng)堆應(yīng)用程序, spring-boot-starter-webflux 包括 包括 spring-boot-starter-reactor-netty 來(lái)實(shí)現(xiàn)Reactor Netty ,但我們可以使用 spring-boot-starter-tomcat,spring-boot-starter-jetty,
Spring Boot還支持稱為 Jetty服務(wù)器。它是一個(gè)HTTP服務(wù)器和Servlet容器,具有提供靜態(tài)和動(dòng)態(tài)內(nèi)容的功能。
如果要在應(yīng)用程序中添加Jetty服務(wù)器,則需要添加 spring-boot-starter-jetty 依賴項(xiàng)。
記住: 。在應(yīng)用程序中使用Jetty服務(wù)器時(shí),請(qǐng)確保 排除了默認(rèn)的Tomcat服務(wù)器 spring-boot-starter-web 。它避免了服務(wù)器之間的沖突。
<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>
我們還可以使用 application.properties 文件來(lái)自定義Jetty服務(wù)器的行為。
Spring Boot提供了另一個(gè)名為 Undertow 的服務(wù)器。它也是像Jetty這樣的嵌入式Web服務(wù)器。它用Java編寫,由JBoss管理和贊助。 Undertow服務(wù)器的主要優(yōu)點(diǎn)是:
支持HTTP/2 HTTP升級(jí)支持 Websocket支持 提供對(duì)Servlet 4.0的支持 靈活 可嵌入
記住: : 在應(yīng)用程序中使用Undertow服務(wù)器時(shí),請(qǐng)確保從 spring-boot-starter中排除了默認(rèn)的Tomcat服務(wù)器 -web。避免了服務(wù)器之間的沖突。
<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-undertow</artifactId> </dependency>
我們還可以使用 application.properties 文件來(lái)自定義Undertow服務(wù)器的行為。
spring-boot-starter-web包含spring web依賴項(xiàng),其中包括spring-boot-starter-tomcat。 spring-boot-starter-web包含以下內(nèi)容:
spring-boot-starter jackson spring-core spring-mvc spring-boot-starter-tomcat
spring-boot-starter-tomcat 包含與Tomcat服務(wù)器相關(guān)的所有內(nèi)容。
core el logging websocket
starter-tomcat具有以下依賴性:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.23</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>8.5.23</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>8.5.23</version> <scope>compile</scope> </dependency>
我們也可以使用 spring-mvc 而不使用嵌入式Tomcat服務(wù)器。如果要這樣做,我們需要使用
<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>