Web
Spring Boot 非常适合用于 Web 应用程序开发。您可以通过使用内置的 Tomcat、Jetty、Undertow 或 Netty 来创建一个自包含的 HTTP 服务器。大多数 Web 应用程序使用 spring-boot-starter-web
模块来快速启动和运行。您也可以选择通过使用 spring-boot-starter-webflux
模块来构建响应式 Web 应用程序。
如果你还没有开发过 Spring Boot Web 应用程序,可以按照入门部分中的“Hello World!”示例进行操作。
章节摘要
📄️ Servlet Web 应用程序
如果你想构建基于 Servlet 的 Web 应用程序,可以利用 Spring Boot 对 Spring MVC 或 Jersey 的自动配置功能。
📄️ 响应式 Web 应用程序
Spring Boot 通过为 Spring Webflux 提供自动配置,简化了响应式 Web 应用程序的开发。
📄️ 优雅关闭
默认情况下,所有四种嵌入式 Web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及基于反应式和 Servlet 的 Web 应用程序都启用了优雅关闭。它发生在关闭应用程序上下文的过程中,并在停止 SmartLifecycle bean 的最早阶段执行。此停止处理使用了一个超时时间,提供一个宽限期,在此期间允许现有请求完成,但不允许新的请求。
📄️ Spring Security
如果类路径中包含了 Spring Security,那么 Web 应用默认会受到保护。Spring Boot 依赖 Spring Security 的内容协商策略来决定是使用 httpBasic 还是 formLogin。为了在 Web 应用中添加方法级别的安全性,你还可以根据需要的设置添加 @EnableMethodSecurity。更多信息可以在 Spring Security 参考指南 中找到。
📄️ Spring Session
Spring Boot 为多种数据存储提供了 Spring Session 的自动配置。在构建 Servlet Web 应用程序时,以下存储可以自动配置:
📄️ Spring for GraphQL
如果你想构建 GraphQL 应用程序,可以利用 Spring Boot 对 Spring for GraphQL 的自动配置。Spring for GraphQL 项目基于 GraphQL Java。你至少需要 spring-boot-starter-graphql 启动器。由于 GraphQL 是传输无关的,你还需要在应用程序中添加一个或多个额外的启动器,以便通过 Web 暴露你的 GraphQL API:
📄️ Spring HATEOAS
如果你开发了一个使用超媒体的 RESTful API,Spring Boot 提供了与大多数应用程序良好配合的 Spring HATEOAS 自动配置。该自动配置取代了需要使用 @EnableHypermediaSupport 的需求,并注册了一系列 Bean 以简化基于超媒体的应用程序的开发,包括 LinkDiscoverers(用于客户端支持)和一个配置为正确将响应序列化为所需表示的 ObjectMapper。ObjectMapper 可以通过设置各种 spring.jackson.* 属性进行自定义,或者如果存在的话,通过 Jackson2ObjectMapperBuilder Bean 进行自定义。