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 应用程序都启用了优雅关闭(Graceful shutdown)。它作为关闭应用上下文的一部分,在停止 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(用于客户端支持)和一个经过配置的 ObjectMapper,用于将响应正确地序列化为所需的表示形式。ObjectMapper 可通过设置各种 spring.jackson.* 属性进行自定义,或者如果存在 Jackson2ObjectMapperBuilder Bean,则使用该 Bean 进行定制。