0.前言
Spring 框架提供了很多现成的功能。那么什么是 Spring Boot?使用 Spring 框架,我们可以避免编写基础框架并快速开发应用程序。为了让 Spring 框架提供基础框架,我们需要向 Spring 框架描述有关我们的应用程序及其组件的信息。
不只是我们的应用程序组件需要配置;甚至 Spring 框架提供的类也必须在 Spring 框架内配置为 Bean。
1.Spring配置
1.1.基于 XML 的配置:一种经典方法
- 我们可以向 Spring 框架提供有关我们类的配置信息的一种方法是使用基于 XML 的配置,特别是 Spring Bean 配置文件。当然,Spring 为我们处理了大部分过程,但一切都是需要付出代价的。我们需要提供大量有关我们的应用程序及其组件的信息,以便 Spring 理解并提供所需的功能。似乎在某个时候,我们可能会发现自己花费了大量时间来描述应用程序的细节。这会导致使用 Spring 框架时的复杂性增加,使人们难以使用。
- Spring Framework 开发人员注意到了这一现象,从而引入了使用注释配置应用程序信息的替代方法。以 XML 格式编写配置可能很麻烦、容易出错且耗时,因为它很复杂。因此,Spring 通过使用注释引入了基于 XML 的配置的替代方案。
1.2.原型注释:一次飞跃
- Spring 引入了原型注释,以加快 Spring 框架中应用程序类的配置。诸如@Repository、@Service、@Controller、@RestController、@Autowired、@Qualifier等注释可直接应用于@Component我们的应用程序类。这种方法可帮助我们绕过基于 XML 的配置。
- 然而,有时我们需要将 Spring Framework 本身或第三方库提供的类合并到我们的应用程序中。在这些情况下,我们可能无法访问这些类的源代码。因此,我们不能直接将构造型注释应用于这些类。
- 现在,开发应用程序的主要方法是对具有源代码的类使用构造型注释,而对没有可用源代码的框架或第三方库则依赖 Spring Bean 配置。这种组合需要同时使用 Spring Bean 配置和构造型注释。然而,我们似乎还没有完全解决最初的问题。为了解决这个问题,Spring 引入了 Java 配置方法。
- 现在,开发应用程序的唯一方法是为我们的类(具有源代码)编写 Stereotype 注释,并使用 Spring Bean 配置框架或第三方库(没有源代码)。这种组合涉及同时使用Spring Bean Configuration和Stereotype注释。
- 但是,我们似乎还没有完全克服最初的问题。为了解决这个问题,Spring引入了这种Java Configuration方法。
1.3.Java 配置:补足差距
Spring 引入了 Java 配置方法,无需在 Spring Bean 配置文件中配置没有源代码的类,我们可以在单独的 Java 配置类中编写它们的配置。
优点:
无需记住配置的 XML 标签。类型安全的配置。然而,Java 配置方法似乎并未完全解决这个问题。这是因为,除了 XML 之外,我们现在还需要在框架组件的配置中编写大量代码。Java 配置方法似乎并没有提供比基于 XML 的配置更好的替代方案。开发人员对需要编写大量代码感到沮丧。
除了简化 Spring 框架集成之外,Spring Boot 还提供内置功能,用于执行将应用程序打包为独立 JAR、设置嵌入式 Web 服务器以及管理应用程序依赖项等任务,使其成为快速开发和部署的综合工具。
2.SpringBoot的功能
2.1.自动配置:
在使用 Spring Framework 开发应用程序期间,不仅仅是我们的应用程序组件需要在 IoC(控制反转)容器内以 bean 定义的形式进行配置。以这种方式配置 Spring Framework 类似乎需要大量信息,从而导致更复杂且耗时的开发过程。这就是自动配置概念发挥作用的地方。
开发人员和框架创建者都了解配置框架组件所需的属性和值。鉴于这种共同的理解,人们可能会质疑为什么框架本身不会自动配置其组件以促进我们应用程序的运行。这就是自动配置的本质。
尤其是 Spring Boot,它采用了一种固定的方法来自动配置框架组件。它会扫描我们应用程序的类路径中存在的库并推断出必要的框架组件。它负责为这些组件配置适当的默认值。
例如,如果 Spring Boot 检测到类路径中存在“spring-jdbc”库并识别出正在使用的数据库驱动程序(在本例中假设为“h2”),它将继续配置基本 bean 定义,例如DriverManagerDataSource、DataSourceTransactionManager和JdbcTemplate,所有这些都设置为“h2”数据库的默认值。
如果要求偏离这些默认值,Spring Boot 会无缝地适应程序员在配置框架组件时的输入。
通过利用自动配置的强大功能,开发人员可以轻松地深入编写应用程序的核心业务逻辑,而 Spring Boot 则负责处理复杂的框架组件。
本质上,自动配置减轻了手动配置的负担,自动使用为应用程序量身定制的默认设置来设置 Spring Framework 组件。这样,开发人员就无需再为其应用程序微调 Spring Framework。
2.2. 启动依赖项
Spring Boot 提供了 Maven 原型,旨在加快项目依赖项的配置。这些原型称为“引导启动器依赖项”,可根据所选的 Spring Framework 版本将 Spring Framework 模块和外部库依赖项与适当的版本对齐,从而简化 Spring Framework 模块和外部库依赖项的整合。
在开发基于 Spring Framework 的应用程序时,开发人员需要配置项目将使用的依赖项。这项任务通常很繁琐,涉及排除依赖项故障和查找兼容版本的潜在挑战。此外,这不仅涉及设置外部库类,还涉及辨别各个 Spring Framework 模块之间的版本兼容性。
此外,当考虑将应用程序迁移到更高或更新的 Spring Framework 版本时,必须重新审视调试和识别依赖项的精确版本的整个过程。
为了应对这些挑战并简化设置 Spring Framework 项目及其兼容依赖项(包括第三方依赖项)的过程,Spring Boot 引入了“启动依赖项”的概念。
对于每种项目类型或技术,Spring Boot 都提供了专用的启动器。这些启动器可以无缝集成到 Maven 或 Gradle 项目中。这样,Spring Boot 就承担起了整合必要的 Spring 相关模块和外部库的责任,所有这些都配备了兼容的版本。
2.3.执行器端点:
使用 Spring Boot,我们能够开发从开发顺利过渡到生产级部署的应用程序。Actuator Endpoints是一项强大的功能,它提供了各种内置端点,包括健康检查、指标评估、内存洞察等功能。重要的是,这些端点可以轻松启用,从而方便在生产环境中部署应用程序。这样就无需添加额外的代码来确保应用程序适合生产部署。
Spring Boot 显著简化了应用程序开发过程,使其更加高效和易于管理。其突出特点之一是包含执行器端点。这些端点是运行时监视和管理应用程序的重要工具。它们为应用程序的运行状况、性能和其他方面提供了宝贵的见解。
例如,“健康”端点支持实时健康检查,使管理员能够及时发现任何问题。“指标”端点提供了一套全面的指标,有助于进行性能分析。此外,“内存”端点提供有关内存使用情况的信息,这对于优化资源分配至关重要。
Actuator Endpoints 的优点在于其开箱即用和易于集成。只需启用所需的端点,开发人员就可以访问有关应用程序的宝贵信息,而无需编写额外的代码。这不仅节省了时间,还提高了在不同环境中管理和监控应用程序的效率。
2.4.DevTools【开发特性】
借助 DevTools,代码调试变得非常高效。通常,当我们在开发过程中修改代码时,我们不得不重新部署并重新启动应用服务器。不幸的是,这个过程会耗费大量的开发时间。然而,DevTools 带来了令人耳目一新的变化。它确保我们所做的任何代码更改都能无缝反映出来,而无需完全重新启动应用服务器。相反,DevTools 会动态地将我们更改的特定类重新加载到 JVM 内存中。这种智能功能大大缩短了调试时间,促进了更顺畅、更高效的开发过程。
2.5. 嵌入式容器
嵌入式容器的概念是一项显著的功能,它增强了开发过程。在这种方法中,服务器作为库集成到项目中。因此,您可以直接从代码库执行项目。无需外部安装容器,也无需繁琐的打包和部署到单独服务器的过程。这种简化的方法大大加快了应用程序开发的开发和质量保证阶段。
2.6.Spring Boot CLI:
Spring Boot 命令行界面 (CLI) 引入了一个强大的工具,可以快速开发和执行原型代码。通过利用 Spring CLI,您可以非常轻松地编写 Spring Framework 代码,类似于创建 RestController。然后可以使用 CLI 快速执行此代码。
此 CLI 可用作 shell,可以方便地安装在本地计算机上。它使您能够快速编写和运行 Spring Framework 代码,而无需进行大量设置或配置。Spring Boot CLI 的主要目标是促进原型和实验代码的快速执行。这种快速的开发过程在测试和验证新概念或想法时显著提高了敏捷性。
3.SpringBoot的功能优势
- 快速启动体验: Spring Boot 为构建 Spring Framework 应用程序提供了无缝起点,加快了设置过程。
- 快速应用程序开发:借助 Spring Boot 的简化方法,开发人员可以快速开发应用程序,从而提高效率和生产力。
- 自动配置:自动配置功能可使用默认设置高效地配置框架组件。在需求不同的情况下,简单的配置可轻松调整组件。
- 生产级部署: Spring Boot 支持部署符合生产级标准的应用程序,确保稳定性和可靠性。
- 增强的非功能性方面:除了核心功能之外,Spring Boot 还解决了应用程序开发的非功能性方面。这包括调试、开发期间自动重启以及用于指标和内存管理的强大工具等功能。
本质上,Spring Boot 通过提供一系列简化流程、增强生产准备和增强开发体验的功能,彻底改变了 Spring Framework 应用程序开发。