傾聽事件


在Spring應用程式執行期間,ApplicationContext會發佈一連串的事件,所有的事件都是抽象類別org.springframework.context.ApplicationEvent的子類別,像是:
  • ContextClosedEvent
在ApplicationContext關閉時發佈事件。
  • ContextRefreshedEvent
在ApplicationContext初始或Refresh時發佈事件。
  • RequestHandledEvent
在Web應用程式中,當請求被處理時,ApplicationContext會發佈此事件。

如果您對這些事件有興趣,則可以實作org.springframework.context.ApplicationListener介面,並在定義檔 中定義實作該介面的一個Bean實例,ApplicationContext會在ApplicationEvent發佈時通知這些Bean實例。

在Spring中,實作ApplicationListener介面的實例為
  • ConsoleListener
僅在Debug時使用,會在文字模式下顯示登錄(Log)ApplicationContext的相關訊息。
  • PerformanceMonitorListener
在Web應用程式中,搭配WebApplicationContext使用,登錄請求的回應時間。

例如您可以在Bean定義檔中這麼撰寫:
  • beans-config.xml
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="listener"
class="org.springframework.context.event.ConsoleListener"/>

....
</beans>

則運行Spring應用程式時,將可以在ApplicationEvent相關事件發佈時,於文字模式下觀察到登錄訊息。