Spring Boot 是 Java 世界中最流行的应用程序构建框架。Spring Boot 是一种基于约定而非配置的方法,用于构建基于 Spring 框架的应用程序。
使用 Spring Boot,你可以构建单体应用程序、微服务、serverless 应用程序、批处理应用程序等不同类型的应用程序。
让我们快速了解一下 Spring Boot 有哪些关键功能使其如此受欢迎。
Spring Boot 关键特性自动配置Spring Boot 对应用程序有自己的约定,它会根据默认约定自动配置组件(又称 Bean),而不需要你显式配置所有内容。不过,如果需要,你可以通过各种方式自定义或覆盖 Bean 配置。
例如,如果添加 spring-boot-starter-data-jpa 依赖,它将添加 Hibernate 作为 JPA 实现,因为它是最常用的 JPA 提供程序。此外,Spring Boot 还会自动配置使用 Spring Data Jpa 所需的组件,如 DataSource、EntityManagerFactory、PlatformTransactionManager 等。如果 classpath 中存在内存 JDBC 驱动程序(如 H2 或 HSQL),那么 Spring Boot 将自动配置基于内存的数据源。
如果要使用 MySQL、Postgresql 等非内存数据库,可以添加相应的 JDBC 驱动程序 jar,并在 application.properties 文件中配置 JDBC 连接参数。然后,Spring Boot 将使用这些属性来配置 DataSource Bean,而不是使用默认的内存数据库。你甚至可以使用 @Bean 注解自行配置 DataSource Bean,然后 Spring Boot 将回退并使用你配置的 DataSource Bean,而不是自动配置。
有了 Spring Boot 的自动配置功能,对 Spring 应用程序配置的需求就大大减少了。
约定大于配置Spring Boot 依靠各种默认约定来自动配置应用程序。
例如,在大多数基于 Spring(不是基于 Spring Boot)的应用程序中,我们使用配置属性并注册 PropertySourcesPlaceholderConfigurer Bean。在 Spring Boot 中,你可以将配置属性放在 src/main/resources/application.properties 文件中,Spring Boot 将自动注册 PropertySourcesPlaceholderConfigurer Bean,并加载该文件中的属性。你不必明确指定属性文件名。
同样,你可能希望根据环境(dev、qa、staging、prod)为属性配置不同的值。你可以在 application-{profile}.properties 中配置配置文件属性,其中配置文件可以是 dev、qa、staging 和 prod。然后,只需启用所需的配置文件,Spring Boot 就能从特定的配置文件属性文件中读取值。
Spring Boot 非常灵活,可以根据项目或团队的偏好自定义这些约定。
依赖的版本管理通常情况下,Spring Boot 应用程序继承自 spring-boot-starter-parent,而 spring-boot-starter-parent 已配置了所有兼容的依赖的版本,因此你不必再检查哪个依赖的版本与哪个版本的 Spring 兼容。你可以查看 org.springframework.boot:spring-boot-dependencies 模块的 pom.xml,了解预先配置的所有依赖。
生产准备就绪的监控功能监控是任何在生产中运行的应用程序的一个重要方面。Spring Boot 通过 Actuator 提供了生产就绪监控功能。你可以通过 Actuator REST 端点获取内存使用情况、磁盘空间、各种组件的健康检查等应用程序运行时信息。Actuator 在运行状态下使用 Micrometer,你可以使用它将所有这些应用程序指标导出到各种监控服务,如 Prometheus、Datadog、Influx 等。
嵌入式服务器的支持传统上,基于 Java 的 web 应用程序是以 war 文件的形式构建的,然后部署到 servlet 容器或 Tomcat、Wildfly、WebSphere 等应用服务器上。更现代的方法是将服务器运行时嵌入到应用程序本身,这样就可以直接运行应用程序,而无需从外部安装和配置服务器。
Spring Boot 支持嵌入 Tomcat、Jetty、Undertow 等 servlet 容器,你可以,以独立于服务器的方式定制各种服务器属性。Spring Boot 还提供各种特定于服务器的自定义属性。
Spring 生态Spring Boot 拥有庞大的项目生态系统,可支持各种类型的应用程序。
SpringMVC 和 Spring WebFlux:你可以使用 SpringMVC 或 Spring WebFlux 构建传统的 web 应用程序和 REST API。Spring Data:Spring Data 为 ORM 和 NoSQL 数据访问库提供了高级抽象,因此你无需重复实现模板化的 CRUD 操作。Spring Security:你可以使用 Spring Security 实现身份验证和授权。它还支持实现基于 OAuth 2.0 的认证和授权。Spring Batch:你可以使用 SpringBatch 构建强大的批处理应用程序Spring Integration:Spring Integration 实现了许多企业集成模式,可用于与第三方服务集成。Spring Cloud:Spring Cloud 支持按照 12 要素应用程序 原则构建云原生应用程序。Spring Cloud Streams:你可以构建数据管道,处理 Kafka 等基于流的数据源。还有