SpringBoot教程-Spring Boot 入门套件
Spring Boot Starter Web是Spring Boot的一个重要特性,它具有以下两个重要特点:
- 兼容Web开发:Spring Boot Starter Web对于Web开发非常友好。
- 自动配置:它自动进行配置,简化了开发过程。
如果我们想要开发一个Web应用程序,需要在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
Spring Boot Starter Web使用了Spring MVC、REST和Tomcat作为默认的内嵌服务器。单一的spring-boot-starter-web
依赖项传递性地引入了与Web开发相关的所有依赖项,同时减少了构建依赖项的数量。spring-boot-starter-web
传递地依赖于以下项目:
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
默认情况下,spring-boot-starter-web
包含了以下Tomcat服务器的依赖:
<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
自动配置了以下Web开发所需的内容:
- Dispatcher Servlet
- 错误页面(Error Page)
- 管理静态依赖的Web JARs
- 内嵌Servlet容器(Embedded servlet container)
Spring Boot内置了一个内嵌服务器,每个Spring Boot应用程序都包含一个内嵌服务器。内嵌服务器作为可部署应用程序的一部分嵌入其中。内嵌服务器的优势在于不需要在环境中预先安装服务器。在Spring Boot中,默认的内嵌服务器是Tomcat,同时Spring Boot也支持另外两个内嵌服务器:
- Jetty Server
- Undertow Server
如果想要使用其他内嵌服务器,对于使用Servlet堆栈(Servlet stack)的应用程序,我们可以使用spring-boot-starter-jetty
或者spring-boot-starter-undertow
来替代spring-boot-starter-web
中的Tomcat。对于使用反应式堆栈(Reactive stack)的应用程序,我们可以使用spring-boot-starter-tomcat
、spring-boot-starter-jetty
或者spring-boot-starter-undertow
来替代spring-boot-starter-webflux
中的Reactor Netty。
Jetty Server是另一种被Spring Boot支持的内嵌服务器。它是一个HTTP服务器和Servlet容器,具有提供静态和动态内容的能力。在需要机器与机器之间通信的情况下可以使用Jetty Server。
如果要在应用程序中添加Jetty服务器,需要在pom.xml文件中添加spring-boot-starter-jetty
依赖项,并且在使用Jetty服务器时,需要确保将默认的Tomcat服务器从spring-boot-starter-web
中排除掉,以避免服务器之间的冲突。
<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
文件来自定义Jetty服务器的行为。
Undertow Server是Spring Boot提供的另一个服务器。它与Jetty一样也是一个内嵌式Web服务器。它由Java编写,由JBoss管理和赞助。Undertow服务器的主要优势包括:
- 支持HTTP/2
- 支持HTTP升级
- 支持WebSocket
- 提供Servlet 4.0支持
- 灵活
- 可嵌入
如果想要在应用程序中添加Undertow服务器,需要在pom.xml文件中添加spring-boot-starter-undertow
依赖项,并且在使用Undertow服务器时,需要确保将默认的Tomcat服务器从spring-boot-starter-web
中排除掉,以避免服务器之间的冲突。
<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
文件来自定义Undertow服务器的行为。
spring-boot-starter-web和spring-boot-starter-tomcat之间的区别如下:
spring-boot-starter-web包含了Spring Web相关的依赖项,其中包括spring-boot-starter-tomcat。spring-boot-starter-web包含以下内容:
- spring-boot-starter
- jackson
- spring-core
- spring-mvc
- spring-boot-starter-tomcat
而spring-boot-starter-tomcat则包含了与Tomcat服务器相关的一切内容,包括:
- 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>
我们也可以在不使用内嵌的Tomcat服务器的情况下使用spring-mvc。如果要这样做,需要使用<exclusion>
标签将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>
请注意,通过这种排除方式,将会移除内嵌的Tomcat服务器依赖,从而允许您在不使用内嵌服务器的情况下使用spring-mvc。