墨风如雪博客

  • 源码小店
  • 导航站
  • 登录
  • java
  • 资源分享
让AI使用变得如此简单
  1. 首页
  2. java
  3. spring
  4. 正文

告诉你spring boot 的生命周期是怎么样的(超详细)

2023年 5月 3日 273点热度 0人点赞 0条评论

Spring Boot 是用于创建独立、可执行的 Spring 应用程序的框架。它在普通的 Spring 应用程序基础上做了大量的自动化配置,从而减少了很多常规的应用程序开发工作。Spring Boot 应用程序的生命周期如下:

1. 应用程序启动

Spring Boot 应用程序通过启动类中的 main 方法启动。Spring Boot 提供了一个 SpringApplication 类来简化启动应用程序的过程。以下是一个简单的启动类示例:

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

2. 应用程序初始化

一旦应用程序启动,Spring Boot 将开始自动配置和初始化各个组件。这包括底层的应用程序上下文、自动配置、数据源、缓存、消息队列等等。这些组件是根据默认配置以及应用程序的特殊需求进行配置和初始化的。

3. SpringApplication 分析和加载

用于创建 Spring Boot 应用程序的 SpringApplication 类会分析配置和构建信息,以确定需要加载和初始化哪些组件。

@SpringBootApplication
public class MyApp {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        app.run(args);
    }
}

4. 应用程序启动通知

应用程序启动时,Spring Boot 发出启动通知。它会广播使用 ApplicationEventPublisher bean 发布的应用程序启动事件。下面是一个自定义的事件类:

public class MyApplicationStartedEvent extends ApplicationStartedEvent {
    public MyApplicationStartedEvent(Object source) {
        super(source);
    }
}
@SpringBootApplication
public class MyApp implements ApplicationListener<MyApplicationStartedEvent> {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        app.run(args);
    }

    @Override
    public void onApplicationEvent(MyApplicationStartedEvent event) {
        System.out.println("应用程序已经启动!");
    }
}

5. 应用程序运行

应用程序启动后,Spring Boot 应用程序将运行并等待来自客户端的请求。应用程序的行为取决于配置、自动配置和应用程序代码。

6. 应用程序关闭

应用程序关闭时,Spring Boot 将清理并销毁各个组件。这包括应用程序上下文、数据源、缓存等。以下是一个使用 CommandLineRunner 接口的示例,该接口可在应用程序关闭时进行清理操作:

@SpringBootApplication
public class MyApp implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        app.run(args);
    }

    @Override
    public void run(String... args) throws Exception {
        // 在应用程序关闭时执行的代码
        System.out.println("应用程序正在关闭!");
    }
}

7. 应用程序关闭通知

应用程序关闭时,Spring Boot 发出关闭通知。它会广播使用 ApplicationEventPublisher bean 发布的应用程序关闭事件。下面是一个自定义的事件类:

public class MyApplicationClosedEvent extends ApplicationClosedEvent {
    public MyApplicationClosedEvent(Object source) {
        super(source);
    }
}
@SpringBootApplication
public class MyApp implements ApplicationListener<MyApplicationClosedEvent> {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        app.run(args);
    }

    @Override
    public void onApplicationEvent(MyApplicationClosedEvent event) {
        System.out.println("应用程序已经关闭!");
    }
}

总结:

在本文中,我们介绍了 Spring Boot 应用程序的生命周期。了解 Spring Boot 的生命周期可以帮助您更好地理解和管理应用程序的行为和组件之间的交互。虽然大部分的生命周期都是自动化的,但是如果我们需要在应用程序启动或关闭时执行特定的操作,我们可以使用各种回调和事件机制来实现。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: java spring spring boot 生命周期
最后更新:2023年 5月 3日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
告别机械感!OpenAudio S1让AI声音活起来 Sora触手可及!微软必应AI视频生成器,全民创作时代来临? 阿里WebAgent开源:引领自主搜索新纪元 重磅炸弹!字节跳动开源BAGEL:70亿参数,统一多模态理解与生成,AI“全能王”诞生记! 小米MiMo-VL:7B参数,怎么就成了多模态界的“越级打怪王”? 炸裂!DeepSeek 8B 量化版降临:告别显存焦虑,你的 3080 Ti 也能玩转顶级大模型了!
AI圈炸锅了!Mistral Medium 3:性能 SOTA,成本打骨折,企业玩家的新宠?字节终于开源“扣子”同款引擎了!FlowGram:AI 时代的可视化工作流利器告别“微信黑箱”!Chatlog:让你的聊天记录也能拥有“AI大脑”!字节跳动 Seed-Coder-8B:不靠人工洗数据,这80亿参数的小模型如何写出顶尖代码?85倍速的视觉革命:苹果发布 FastVLM,让你的 iPhone ‘看图说话’,快到飞起!告别AI视频“变脸怪”!腾讯混元Hunyuan Custom重磅开源,主体一致性“王炸”来了!
不只靠“堆参数”:Qwen新突破ParScale,用“并行”让模型更聪明 JDK1.8新特性详解 Couchbase开源的NoSQL(非关系型)数据库 CentOS7 防火墙(firewall)的操作命令 java Web框架SpringBoot的(超详细总结) 炸裂!MistralAI 新模型 Devstral-Small 来了:236亿参数,凭啥在软件工程榜单上碾压千亿巨头?
标签聚合
教程 动态规划 spring AI deepseek 设计模式 java 算法

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

免责声明 - 隐私政策