浅谈一下对SpringBoot的理解

发布时间 2023-12-14 14:56:19作者: zzusjw

简化Spring + SpringMVC的开发

1. Maven 导入依赖 Starter

  • 依赖管理:Spring Boot 的 Starter 依赖简化了项目的依赖管理。通过导入预配置的 Starter 依赖,开发者可以轻松地引入一组相关的库和配置,而无需手动管理每个库的版本和依赖关系。
  • 约定大于配置:使用 Starter 依赖遵循了 Spring Boot 的设计原则,即约定大于配置。这种方式促使了项目的标准化,减少了在配置上的差异,提高了项目的可维护性。
  • 快速搭建项目:通过 Maven 导入 Starter 依赖,可以迅速搭建一个基于 Spring Boot 的项目,减少了从零开始构建项目的时间和工作量。

2. 简化冗余配置

  • 自动配置:Spring Boot 的自动配置机制消除了大量的冗余配置。根据项目的依赖和条件,Spring Boot 会自动配置项目中的各种组件,使得开发者不再需要手动编写冗长的配置文件。
  • 默认值和约定:Spring Boot 提供了合理的默认配置和约定,减少了在配置中需要显式指定的情况。这有助于项目更快速地启动,并且使得配置文件更加简洁。
  • 注解和属性文件:Spring Boot 大量使用注解和属性文件,使得配置信息更易读、易维护,减少了冗余的 XML 配置。开发者可以通过简单的注解或属性文件就能完成很多配置,而无需编写大量的代码。
  • 可扩展性:尽管 Spring Boot 提供了很多自动配置,但仍然保留了足够的灵活性,允许开发者根据实际需求进行自定义配置。这样既简化了配置,又保留了可扩展性。

关于内嵌 Tomcat 的理解

a. Spring MVC 父子容器

  • 在传统的 Spring MVC 应用中,通常有一个父容器(Root Context)和一个子容器(Servlet Context)。父容器负责管理应用程序的核心组件,而子容器负责管理与 Servlet 相关的组件(如控制器等)。这样的结构在传统的 WAR 部署中比较常见。
  • 在 Spring Boot 中,使用内嵌 Tomcat 时,整个应用程序作为一个单一的容器,而不再需要显式定义父子容器关系。这简化了配置和部署,并提供了更加直观和易于理解的应用程序结构。

b. JAR - Tomcat 进程

  • Spring Boot 打包成可执行的 JAR 文件,这个 JAR 文件包含了应用程序的所有依赖项,包括内嵌的 Tomcat。这种方式被称为 "fat JAR" 或 "可执行 JAR"。
  • 这样的 JAR 文件可以直接通过 java -jar 命令启动,不需要额外的外部容器。应用程序的部署变得更加简单,只需运行一个 JAR 文件,整个应用程序就启动了。
  • 由于每个 JAR 文件都包含了一个独立的 Tomcat 进程,因此在同一台服务器上可以运行多个 Spring Boot 应用程序,它们彼此独立,互不干扰。这为多个应用程序的同时运行提供了方便。