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自带事件
@Async
@EventListener(ContextRefreshedEvent::class)
fun onApplicationEvent() {
logger.forInfo { "开始预加载wbs信息" }
logger.forInfo { "预加载wbs信息结束" }
}
SpringBoot事件
应用程序运行时,应按以下顺序发送应用程序事件:
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了