Web
Spring Boot 非常适合 Web 应用程序开发。你可以使用内嵌的 Tomcat、Jetty 或 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 的自动配置。
📄️ Reactive Web 应用程序
Spring Boot 通过为 Spring WebFlux 提供自动配置,简化了响应式 Web 应用程序的开发。
📄️ 优雅关闭
优雅关闭(Graceful shutdown)在所有三种嵌入式 Web 服务器(Jetty、Reactor Netty 和 Tomcat)以及响应式和基于 Servlet 的 Web 应用程序中默认都是启用的。它作为关闭应用上下文的一部分,在停止 SmartLifecycle Bean 的最早阶段执行。此停止处理使用一个超时时间,该超时提供了一个宽限期,在此期间允许现有请求完成,但不允许新的请求进入。
📄️ Spring Security
如果 Spring Security 在 classpath 中,则 Web 应用程序默认是受保护的。这包括对 Spring Boot 的 /error 端点进行安全保护。Spring Boot 依赖于 Spring Security 的内容协商(content-negotiation)策略来决定使用 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 starter。由于 GraphQL 与传输协议无关,你还需要在应用程序中添加一个或多个额外的 starter,以便通过 Web 暴露你的 GraphQL API:
📄️ Spring HATEOAS
如果你开发了一个使用超媒体(hypermedia)的 RESTful API,Spring Boot 为 Spring HATEOAS 提供了自动配置,适用于大多数应用程序。该自动配置取代了使用 @EnableHypermediaSupport 的需求,并注册了多个 Bean 以简化基于超媒体的应用程序的构建,包括一个 LinkDiscoverers(用于客户端支持)和一个经过配置的 JsonMapper,可将响应正确地序列化为所需的表示形式。JsonMapper 可通过设置各种 spring.jackson.* 属性进行自定义,或者(如果存在的话)通过 JsonMapperBuilderCustomizer Bean 进行定制。