主页 > 人工智能  > 

SpringBoot简介与快速搭建及启动流程详解

SpringBoot简介与快速搭建及启动流程详解

文章目录 一、Spring Boot 概述及选择原因(一)什么是 Spring Boot(二)为何选择 Spring Boot 二、使用 Spring Initializr 快速创建 Spring Boot 项目(一)步骤(二)导入项目到 IDE 三、项目结构分析四、Spring Boot 项目的启动流程(一)启动入口(二)创建 `SpringApplication` 实例(三)运行 `SpringApplication` 实例1. 准备环境2. 创建 `ApplicationContext`3. 准备 `ApplicationContext`4. 加载源配置5. 刷新 `ApplicationContext`6. 发布应用启动完成事件 (四)异常处理

一、Spring Boot 概述及选择原因 (一)什么是 Spring Boot

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的配置方式,使得开发人员可以摆脱传统 Spring 项目中繁琐的 XML 配置,从而更加专注于业务逻辑的开发。

(二)为何选择 Spring Boot 简化配置:Spring Boot 采用了约定大于配置的原则,提供了大量的默认配置。例如,在使用 Spring Boot 开发 Web 应用时,只需要添加相应的依赖,Spring Boot 就会自动配置好嵌入式的 Tomcat 服务器,无需手动配置服务器的启动参数和部署信息。快速开发:Spring Boot 提供了丰富的 Starter 依赖,这些 Starter 是一组经过精心挑选的依赖集合。比如,要开发一个基于 Spring Data JPA 的数据库应用,只需要添加 spring - boot - starter - data - jpa 依赖,Spring Boot 会自动引入 JPA、Hibernate 等相关依赖,大大节省了开发时间。易于部署:Spring Boot 支持将应用打包成可执行的 JAR 或 WAR 文件,其中包含了所有的依赖和嵌入式服务器。可以直接通过 java - jar 命令来运行应用,无需额外的服务器环境配置。生产就绪:Spring Boot 提供了一系列的生产级特性,如健康检查、指标监控、外部化配置等。例如,通过添加 spring - boot - starter - actuator 依赖,可以方便地对应用的运行状态进行监控和管理。 二、使用 Spring Initializr 快速创建 Spring Boot 项目 (一)步骤 访问 Spring Initializr 网站:打开 Spring Initializr 网站。项目配置 Project:选择项目类型,通常选择 Maven Project 或 Gradle Project,这里以 Maven Project 为例。Language:选择编程语言,如 Java。Spring Boot:选择合适的 Spring Boot 版本。Group:填写项目的组名,通常是公司或组织的域名倒序,如 com.example。Artifact:填写项目的名称,如 demo。Dependencies:添加项目所需的依赖,例如,如果要开发一个简单的 Web 应用,可以添加 Spring Web 依赖。 生成项目:点击 Generate 按钮,Spring Initializr 会生成一个压缩包,下载并解压到本地。 (二)导入项目到 IDE

以 IntelliJ IDEA 为例:

打开 IntelliJ IDEA,选择 File -> New -> Project from Existing Sources。选择解压后的项目文件夹,点击 OK。在弹出的对话框中选择 Import project from external model,选择 Maven,然后按照向导完成项目导入。 三、项目结构分析

使用 Spring Initializr 生成的 Maven 项目的基本结构如下:

demo ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ └── DemoApplication.java │ │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── templates │ └── test │ └── java │ └── com │ └── example │ └── demo │ └── DemoApplicationTests.java └── pom.xml src/main/java:存放 Java 源代码。src/main/resources:存放项目的资源文件。 application.properties:Spring Boot 的配置文件,用于配置应用的各种参数,如数据库连接信息、服务器端口等。static:用于存放静态资源,如 HTML、CSS、JavaScript 等。templates:用于存放模板文件,如 Thymeleaf 模板。 src/test/java:存放测试代码。pom.xml:Maven 项目的配置文件,用于管理项目的依赖和构建信息。 四、Spring Boot 项目的启动流程 (一)启动入口

Spring Boot 项目的启动通常从带有 @SpringBootApplication 注解的主类中的 main 方法开始。示例代码如下:

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MySpringBootApp { public static void main(String[] args) { SpringApplication.run(MySpringBootApp.class, args); } }

在上述代码中,SpringApplication.run() 方法是启动的核心,它会调用一系列方法来完成项目的启动。

(二)创建 SpringApplication 实例

当调用 SpringApplication.run() 方法时,首先会创建一个 SpringApplication 实例。在创建过程中,会完成以下操作:

推断应用类型:判断应用是普通的非 Web 应用、Servlet Web 应用还是 Reactive Web 应用。查找并加载初始化器(ApplicationContextInitializer):初始化器用于在 ApplicationContext 刷新之前对其进行定制化配置。查找并加载监听器(ApplicationListener):监听器可以监听 Spring Boot 应用的各种生命周期事件,如应用启动、停止等。推断主类:确定包含 main 方法的主类。 (三)运行 SpringApplication 实例

创建 SpringApplication 实例后,会调用其 run() 方法,该方法会执行以下步骤:

1. 准备环境 创建并配置 Environment:Environment 接口用于表示应用运行的环境,包括系统属性、环境变量、配置文件等。Spring Boot 会根据不同的应用类型(如 Web 应用或非 Web 应用)创建相应的 Environment 实例,并加载配置属性。发布 ApplicationEnvironmentPreparedEvent 事件:通知所有监听器环境已经准备好。 2. 创建 ApplicationContext 根据应用类型创建 ApplicationContext 实例: 对于 Servlet Web 应用,通常会创建 AnnotationConfigServletWebServerApplicationContext 实例。对于 Reactive Web 应用,会创建 AnnotationConfigReactiveWebServerApplicationContext 实例。对于非 Web 应用,会创建 AnnotationConfigApplicationContext 实例。 3. 准备 ApplicationContext 设置 Environment 到 ApplicationContext 中:将之前创建和配置好的 Environment 注入到 ApplicationContext 中。应用初始化器(ApplicationContextInitializer):依次调用之前加载的初始化器,对 ApplicationContext 进行进一步的定制化配置。发布 ApplicationContextInitializedEvent 事件:通知所有监听器 ApplicationContext 已经初始化完成。 4. 加载源配置 扫描并注册组件:根据 @SpringBootApplication 注解(包含 @ComponentScan),Spring Boot 会扫描指定包及其子包下的所有带有 @Component、@Service、@Repository、@Controller 等注解的类,并将它们注册到 ApplicationContext 中。加载自动配置类:@SpringBootApplication 注解包含 @EnableAutoConfiguration,它会根据类路径下的依赖和配置,自动加载合适的自动配置类。这些自动配置类会根据条件判断是否生效,从而为应用提供默认的配置。 5. 刷新 ApplicationContext 创建并初始化 Bean:Spring 容器会根据之前注册的组件和配置,创建和初始化所有的 Bean。在这个过程中,会处理 Bean 的依赖注入、AOP 代理等操作。启动嵌入式服务器(如果是 Web 应用):对于 Web 应用,Spring Boot 会启动嵌入式服务器(如 Tomcat、Jetty 等),并将 ApplicationContext 注册到服务器中。 6. 发布应用启动完成事件 发布 ApplicationStartedEvent 事件:表示应用已经成功启动。调用 CommandLineRunner 和 ApplicationRunner 接口的实现类:如果项目中存在实现了 CommandLineRunner 或 ApplicationRunner 接口的类,Spring Boot 会在应用启动完成后调用它们的 run() 方法,用于执行一些初始化任务。发布 ApplicationReadyEvent 事件:表示应用已经准备好接受请求。 (四)异常处理

在整个启动过程中,如果发生异常,Spring Boot 会发布 ApplicationFailedEvent 事件,通知所有监听器应用启动失败,并进行相应的异常处理。

综上所述,Spring Boot 凭借其简化配置、快速开发、易于部署和生产就绪等优势,成为了开发 Spring 应用的首选框架。通过 Spring Initializr 可以快速创建项目,了解项目结构和启动流程则有助于开发者更好地理解和运用 Spring Boot 进行项目开发。

标签:

SpringBoot简介与快速搭建及启动流程详解由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringBoot简介与快速搭建及启动流程详解