搜索

ApplicationEvent的几种示例


发布时间: 2022-11-24 18:36:03    浏览次数:45 次

自定义事件

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
免责声明 ApplicationEvent的几种示例,资源类别:文本, 浏览次数:45 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 06:36:03。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/Acaak/p/16803520.html