Spring Boot 是基于 Spring 框架的一个子项目,它旨在简化新 Spring 应用的初始搭建以及开发过程。Spring Boot 应用的生命周期与一个普通的 Java 应用的生命周期类似,但有一些特定的点需要注意,特别是在 Spring 容器的上下文中。以下是 Spring Boot 应用的生命周期的关键点:
- 应用启动:
• public static void main(String[] args):这是 Java 程序的入口点,Spring Boot 应用也不例外。在这里,通常会调用 SpringApplication.run() 方法来启动 Spring 应用。 - Spring 应用上下文加载:
• SpringApplication:这个类负责创建 Spring 应用上下文,加载应用配置,并初始化 Spring 容器。
• ApplicationListener:在 Spring 应用上下文初始化过程中,可以注册监听器来监听不同的生命周期事件。 - Bean 加载和创建:
• @Configuration 类和 @Bean 方法:这些定义了 Spring 容器中的 Bean。当 Spring 容器启动时,它会加载这些配置类,并创建定义的 Bean。
• @Component、@Service、@Repository、@Controller:这些注解自动将类标记为 Bean,Spring 容器会在启动时自动检测并创建这些 Bean。 - 应用事件发布:
• ApplicationStartingEvent:在 Spring 应用上下文刷新之前发布。
• ApplicationEnvironmentPreparedEvent:在环境准备好之后,但在上下文刷新之前发布。
• ApplicationPreparedEvent:在上下文刷新之后,但在发送任何应用启动事件之前发布。
• ApplicationStartedEvent:在应用完全启动后发布。
• ApplicationReadyEvent:在应用准备就绪后发布,意味着所有的自动配置都已经加载并且应用已经可以接收请求。 - 运行时:
• 应用开始处理请求和业务逻辑。 - 应用关闭:
• @PreDestroy 注解:可以用于在 Bean 销毁之前执行清理操作。
• DisposableBean 接口:实现了这个接口的 Bean 会在容器关闭时调用 destroy() 方法。
• ContextClosedEvent:当 Spring 应用上下文关闭时发布。 - 异常处理:
• ApplicationFailedEvent:如果应用启动失败,会发布这个事件。
Spring Boot 还提供了一些自动配置和条件注解,如 @ConditionalOnMissingBean、@ConditionalOnClass 等,这些可以帮助在特定的条件下创建或不创建某些 Bean。此外,Spring Boot 应用可以通过 application.properties 或 application.yml 文件进行配置,这些配置在应用启动时被加载。
了解这些生命周期事件可以帮助开发者更好地控制应用的行为,例如在应用启动时执行初始化操作,或者在应用关闭时进行资源释放。