ApplicationEvent的几种示例

自定义事件

class ChangeStatusChangedEvent(source: Any,val msg: String) : ApplicationEvent(source)
`
发布事件
override val eventPublisher: ApplicationEventPublisher,
eventPublisher.publishEvent(ChangeStatusChangedEvent(this, "msg"))
事件监听
@EventListener(value = [ChangeStatusChangedEvent::class])
fun onChangeProcessedEvent(event: ChangeStatusChangedEvent) {
}

Spring自带事件

image

    @Async
    @EventListener(ContextRefreshedEvent::class)
    fun onApplicationEvent() {
        logger.forInfo { "开始预加载wbs信息" }
        logger.forInfo { "预加载wbs信息结束" }
    }

SpringBoot事件

image

应用程序运行时,应按以下顺序发送应用程序事件:

1. 除了注册侦听器和初始化程序之外,在运行开始时但在任何处理之前发送ApplicationStartingEvent。
2. 当在上下文中使用的Environment已知但在创建上下文之前,将发送ApplicationEnvironmentPreparedEvent。
3. 在刷新开始之前但在加载bean定义之后发送ApplicationPreparedEvent。
4. 在刷新上下文之后但在调用任何应用程序和命令行运行程序之前发送ApplicationStartedEvent。
5. 在调用任何应用程序和命令行运行程序后发送ApplicationReadyEvent。它表示应用程序已准备好为请求提供服务。
6. 如果启动时发生异常,则会发送ApplicationFailedEvent。
某些事件实际上是在创建ApplicationContext之前触发的,因此您无法在@Bean上注册侦听器。您可以使用SpringApplication.addListeners(…​)方法或SpringApplicationBuilder.listeners(…​)方法注册它们。

如果您希望自动注册这些侦听器,无论应用程序的创建方式如何,您都可以将META-INF/spring.factories文件添加到项目中并使用org.springframework.context.ApplicationListener键引用您的侦听器,如下所示:以下示例:

org.springframework.context.ApplicationListener=com.example.project.MyListener
posted @   Acaak  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示