春天

Spring—Spring中的事件處理

Spring—Spring中的事件處理

Spring的中心是ApplicationContext,它處理bean的總生命模式。在堆疊bean時,ApplicationContext分配特定種類的場合。例如,在開始設置時分發ContextStartedEvent,在停止設置時分發ContextStoppedEvent。在ApplicationContext中處理的場合是通過ApplicationEvent類和ApplicationListener接口給出的。因此,假設一個bean執行了ApplicationListener,每次ApplicationEvent被分發到ApplicationContext時,建議該bean執行。春天給出了相應的標準場合

帶有描述的Spring內置事件

ContextRefreshedEvent

這個場合是在ApplicationContext被啟動或恢複時分發的。這同樣可以利用ConfigurableApplicationContext接口上的revive()技術引發。

ContextStartedEvent

當ApplicationContext開始利用ConfigurableApplicationContext接口上的begin()策略時,就會分發此場合。您可以調查您的數據集,或者重新啟動任何暫停的應用程序。

ContextStoppedEvent

當ApplicationContext充分利用ConfigurableApplicationContext接口上的stop()技術時,就會出現這種情況。得到這個機會後,你可以完成所要求的家務工作。

ContextClosedEvent

當使用ConfigurableApplicationContext接口上的near()技術關閉ApplicationContext時,將分發此場合。一個封閉的環境到了它生命的終點;它無法恢複或重新啟動。

RequestHandledEvent

這是一個顯式的web場合,用於讓所有bean知道HTTP需求已被徹底檢查。

Spring的場合處理是單串的,所以如果一個場合是分布式的,除非每個受益者都得到消息,循環就會受到阻礙,流就不會繼續進行。因此,如果要利用所照顧的場合,在計劃應用程序時應謹慎。

關注上下文事件

為了注意設置場合,bean應該使用一種技術onApplicationEvent()實現ApplicationListener接口。因此,讓我們編寫一個指南來了解情況如何增加,以及如何根據特定的情況編寫所需的代碼。

包演示;公共類HelloWorld{私有字符串消息;public void setMessage(字符串消息)Message =消息;}公共無效getMessage(){System.out.println(message);}}

CStartEventHandler.java代碼

包演示;進口org.springframework.context.ApplicationListener;進口org.springframework.context.event.ContextStartedEvent;公共類CStartEventHandler實現了ApplicationListener{公共無效onApplicationEvent(ContextStartedEvent事件){System.out。println (ContextStartedEvent收到);}}

CStopEventHandler.java代碼:

包演示;進口org.springframework.context.ApplicationListener;進口org.springframework.context.event.ContextStoppedEvent;公共類CStopEventHandler實現了ApplicationListener{公共無效onApplicationEvent(ContextStoppedEvent事件){System.out。println (ContextStoppedEvent收到);}}

MainApp.java代碼:

包演示;進口org.springframework.context.ConfigurableApplicationContext;進口org.springframework.context.support.ClassPathXmlApplicationContext;公共類MainApp{公共靜態void main(String[] args) {ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");context.start ();HelloWorld obj = (HelloWorld) context.getBean(" HelloWorld ");obj.getMessage ();context.stop ();}}

xml代碼:

  <屬性名= "message" value = "Hello World! ""/>    < /豆>

Baidu
map