在 Spring Boot 框架中,org.springframework.boot.context.event.SpringApplicationEvent 是一个抽象类,用于定义与 Spring Boot 应用程序生命周期相关的事件。 Spring Boot 提供了一些内置事件,这些事件在应用程序启动和运行的不同阶段被触发。以下是继承自 SpringApplicationEvent 的内置事件及其作用:

1. ApplicationStartingEvent

  • 作用:在运行开始时但在任何处理之前发送。这是应用程序生命周期中的第一个事件。

  • 示例:可以用于在应用启动之初执行一些初始化任务,如配置日志记录系统。

    @Component
    public class ApplicationStartingListener implements ApplicationListener<ApplicationStartingEvent> {
        @Override
        public void onApplicationEvent(ApplicationStartingEvent event) {
            System.out.println("Application is starting");
        }
    }
    

2. ApplicationEnvironmentPreparedEvent

  • 作用:在 Environment 准备好时发送,但在创建 ApplicationContext 之前。这可以用于在环境设置后读取或修改环境属性。

  • 示例:可以用于在环境准备好后调整配置属性。

    @Component
    public class EnvironmentPreparedListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
        @Override
        public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
            System.out.println("Environment Prepared: " + event.getEnvironment());
        }
    }
    

3. ApplicationContextInitializedEvent

  • 作用:在 ApplicationContext 初始构建时发送,但在加载任何 bean 定义之前。这允许在上下文初始化过程中插入逻辑。

  • 示例

    @Component
    public class ContextInitializedListener implements ApplicationListener<ApplicationContextInitializedEvent> {
        @Override
        public void onApplicationEvent(ApplicationContextInitializedEvent event) {
            System.out.println("ApplicationContext initialized");
        }
    }
    

4. ApplicationPreparedEvent

  • 作用:在 ApplicationContext 已被创建且已加载但未刷新时发送。此时可以进行最后的修改。

  • 示例:可以用于在上下文刷新之前进行自定义的 bean 定义修改。

    @Component
    public class ApplicationPreparedListener implements ApplicationListener<ApplicationPreparedEvent> {
        @Override
        public void onApplicationEvent(ApplicationPreparedEvent event) {
            System.out.println("Application context is prepared");
        }
    }
    

5. ApplicationStartedEvent

  • 作用:在 ApplicationContext 刷新并启动后立即发送。此时应用程序已启动,但尚未接收请求。

  • 示例:可以用于在应用程序准备好接受请求之前执行一些检查。

    @Component
    public class ApplicationStartedListener implements ApplicationListener<ApplicationStartedEvent> {
        @Override
        public void onApplicationEvent(ApplicationStartedEvent event) {
            System.out.println("Application started");
        }
    }
    

6. ApplicationReadyEvent

  • 作用:在应用程序完全启动并准备好接收请求时发送。此事件标志着应用程序已启动完毕。

  • 示例:可以用于在应用程序完全启动后执行一些需要在应用程序启动后立即执行的逻辑。

    @Component
    public class ApplicationReadyListener implements ApplicationListener<ApplicationReadyEvent> {
        @Override
        public void onApplicationEvent(ApplicationReadyEvent event) {
            System.out.println("Application is ready to receive requests");
        }
    }
    

7. ApplicationFailedEvent

  • 作用:在启动过程中遇到异常时发送。这可以用于记录错误或执行失败恢复逻辑。

  • 示例:可以用于在应用程序启动失败时进行通知或日志记录。

    @Component
    public class ApplicationFailedListener implements ApplicationListener<ApplicationFailedEvent> {
        @Override
        public void onApplicationEvent(ApplicationFailedEvent event) {
            System.out.println("Application failed: " + event.getException().getMessage());
        }
    }
    

这些事件为开发者提供了钩子,可以在应用程序生命周期的不同阶段插入自定义逻辑,从而增强应用程序的灵活性和可管理性。

posted on 2025-03-06 14:41  卡米i  阅读(7)  评论(0)    收藏  举报