SpringBoot

2 篇文章
SpringBoot 的启动流程

SpringBoot 的启动流程

Spring Boot 应用启动过程包括多个步骤:首先,寻找带有 `@SpringBootApplication` 注解的启动类,并在其中执行 `main()` 方法。随后,实例化 `SpringApplication` 对象,设置应用参数(如是否显示 banner 或以 web 环境启动)。接着,调用 `SpringApplication.run()` 启动应用,准备环境并解析配置文件。之后,创建并刷新应用上下文,注册所有 Bean,包括自动配置的 Bean。应用启动监听器和初始化器执行自定义逻辑,自动配置机制根据类路径和配置属性自动配置应用。如果是 web 应用,启动内嵌服务器。启动完成后,执行 `CommandLineRunner` 和 `ApplicationRunner` 接口的 Bean,最终应用进入运行状态,准备接受请求。

SpringBoot 是如何实现自动配置的?

SpringBoot 是如何实现自动配置的?

SpringBoot 的自动配置基于“约定大于配置”的思想,通过多个关键机制实现。启动时,SpringBoot 会扫描 `classpath` 下的 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件,加载其中的自动配置类。这些类通过条件注解(如 `@ConditionalOnClass`、`@ConditionalOnMissingBean`)确保仅在满足特定条件下生效。例如,引入 `spring-boot-starter-data-redis` 时,自动配置会检测到 `LettuceConnectionFactory` 类,并在未创建 `RedisTemplate` 时自动配置连接池和模板对象。自动配置类通常存在于 `spring.factories` 或 `AutoConfiguration.imports` 中,条件装配避免冲突,配置优先级可通过 `@AutoConfigureAfter` 控制。`@EnableAutoConfiguration` 注解是触发整个自动配置链路的开关,许多第三方库(如 Nacos、MyBatis-Plus)也遵循这一模式,简化了初始化配置。