内容来自《Java Web 程序员面试笔试宝典》

【出现频率】★★★☆☆ 【学习难度】★★★☆☆

答案:Spring的ApplicationContext提供了支持发布及监听事件的功能。提供了以下5种标准事件。

1)上下文更新事件(ContextRefreshEvent):该事件会在 ApplicationContext 被初始化或者更新时发布,也可以在调用 ConfigurableApplicationContext 接口的 refresh() 方法时触发。

2)上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start( )方法开始或重新开始容器时触发该事件。

3)上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop( )方法停止容器时触发该事件。

4)上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。

5)5)请求处理事件(RequestHandledEvent):在Web应用中,当一个HTTP请求(Request)结束时触发该事件。

当然,还可以通过继承ApplicationEvent类来自定义事件。

当一个ApplicationEvent被发布以后,可以创建 Bean 来监听在 ApplicationContext中发布的事件,用一个 bean 实现 ApplicationListener接,当事件发布后,Bean就会自动被通知。