跳到主要内容

Spring Boot 3.x特性-事件与监听

文章目录

    • 1.Spring事件与监听
  • 2.Spring Boot 事件与监听
  • 3.自已定义事件与监听
    • 1.自定义事件(继承ApplicationEvent)
    • 2.发布事件
    • 3.事件监听
    • 4.注册监听器
    • 5.测试
  • 4.基于注解的事件监听器
  • 5.异步监听
  • 6.监听器顺序
  • 7.通用的事件

1.Spring事件与监听

ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口提供的。

如果实现ApplicationListener接口的bean加载到上下文中。每次ApplicationEvent事件被发布到ApplicationContext,该bean会接受到通知。实际上这是标准的Observer设计模式。

下表描述了Spring提供的标准事件:

ContextRefreshedEventApplicationContext被初始化或刷新时发布(例如,通过使用ConfigurableApplicationContext接口上的refresh()方法)。在这里,“初始化”意味着加载了所有bean,检测并激活了后处理器bean,预实例化了单例,ApplicationContext对象已准备好使用。只要上下文没有关闭,就可以多次触发刷新,前提是所选的ApplicationContext实际上支持这样的“热”刷新。例如,XmlWebApplicationContext支持热刷新,但是GenericApplicationContext不支持

| ContextStartedEvent | 通过使用ConfigurableApplicationContext接口上的start()方法,在ApplicationContext启动时发布。在这里,“started”意味着所有生命周期bean都接收一个显式的开始信号。通常,此信号用于在显式停止后重新启动bean,但也可用于启动未配置为自动启动的组件(例如,在初始化时尚未启动的组件)。 | | ContextStoppedEvent | 通过使用ConfigurableApplicationContext接口上的stop()方法,在ApplicationContext停止时发布。在这里,“stopped”意味着所有生命周期bean都接收到一个显式的停止信号。已停止的上下文可以通过start()调用重新启动。 |