İlkbaharda Olay Yönetimi
Tüm bölümlerde, Bahar'ın özünün ApplicationContextçekirdeklerinin tüm yaşam döngüsünü yöneten. ApplicationContext, çekirdekleri yüklerken belirli olay türlerini yayınlar. Örneğin, bir ContextStartedEvent bağlam başlatılır ve ne zaman yayınlanır ContextStoppedEvent bağlam durdurulduğunda yayınlanmaktadır.
ApplicationContext'teki olay işleme , ApplicationEvent sınıfı ve ApplicationListener arabirimi aracılığıyla sağlanır . Bu nedenle, bir fasulye ApplicationListener'ı uygularsa , o zaman bir ApplicationEvent ApplicationContext'te her yayımlandığında, o bean bilgilendirilir.
Bahar, aşağıdaki standart etkinlikleri sağlar -
Sr.No. | İlkbaharda Yerleşik Etkinlikler ve Açıklama |
---|---|
1 | ContextRefreshedEvent Bu olay, ApplicationContext başlatıldığında veya yenilendiğinde yayınlanır. Bu, ConfigurableApplicationContext arabirimindeki yenileme () yöntemi kullanılarak da oluşturulabilir. |
2 | ContextStartedEvent Bu olay, ApplicationContext , ConfigurableApplicationContext arabiriminde start () yöntemi kullanılarak başlatıldığında yayınlanır . Veritabanınızı sorgulayabilir veya bu olayı aldıktan sonra durdurulmuş herhangi bir uygulamayı yeniden başlatabilirsiniz. |
3 | ContextStoppedEvent Bu olay, ApplicationContext , configureableApplicationContext arabiriminde stop () yöntemi kullanılarak durdurulduğunda yayınlanır . Bu olayı aldıktan sonra gerekli temizlik işlerini yapabilirsiniz. |
4 | ContextClosedEvent Bu olay, ApplicationContext , ConfigurableApplicationContext arabiriminde close () yöntemi kullanılarak kapatıldığında yayınlanır . Kapalı bir bağlam yaşamın sonuna ulaşır; yenilenemez veya yeniden başlatılamaz. |
5 | RequestHandledEvent Bu, tüm fasulyelere bir HTTP isteğinin sunulduğunu bildiren web'e özgü bir olaydır. |
Spring'in olay işlemesi tek iş parçacıklıdır, bu nedenle bir olay yayınlanırsa, tüm alıcılar mesajı alana kadar ve almadıkça, işlemler engellenir ve akış devam etmez. Bu nedenle, olay işleme kullanılacaksa uygulamanızı tasarlarken dikkatli olunmalıdır.
Bağlam Olaylarını Dinleme
Bir bağlam olayını dinlemek için, bean , yalnızca bir yöntemi olan ApplicationListener arabirimini uygulamalıdır.onApplicationEvent(). Öyleyse olayların nasıl yayıldığını ve kodunuzu belirli olaylara göre gerekli görevi yerine getirmek için nasıl yerleştirebileceğinizi görmek için bir örnek yazalım.
Çalışan bir Eclipse IDE'ye sahip olalım ve bir Spring uygulaması oluşturmak için aşağıdaki adımları atalım -
Adım | Açıklama |
---|---|
1 | SpringExample adıyla bir proje oluşturun ve altında bir com.tutorialspoint paketi oluşturun .src oluşturulan projedeki klasör. |
2 | Bahar Merhaba Dünya Örneği bölümünde açıklandığı gibi Harici JAR Ekle seçeneğini kullanarak gerekli Bahar kitaplıklarını ekleyin . |
3 | Com.tutorialspoint paketi altında HelloWorld , CStartEventHandler , CStopEventHandler ve MainApp Java sınıfları oluşturun . |
4 | Beans yapılandırma dosyasını Beans.xml altında oluşturun.src Klasör. |
5 | Son adım, tüm Java dosyalarının ve Bean Yapılandırma dosyasının içeriğini oluşturmak ve aşağıda açıklandığı gibi uygulamayı çalıştırmaktır. |
İşte içeriği HelloWorld.java dosya
package com.tutorialspoint;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}
Aşağıdakilerin içeriği CStartEventHandler.java dosya
package com.tutorialspoint;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
public class CStartEventHandler
implements ApplicationListener<ContextStartedEvent>{
public void onApplicationEvent(ContextStartedEvent event) {
System.out.println("ContextStartedEvent Received");
}
}
Aşağıdakilerin içeriği CStopEventHandler.java dosya
package com.tutorialspoint;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStoppedEvent;
public class CStopEventHandler
implements ApplicationListener<ContextStoppedEvent>{
public void onApplicationEvent(ContextStoppedEvent event) {
System.out.println("ContextStoppedEvent Received");
}
}
Aşağıdakilerin içeriği MainApp.java dosya
package com.tutorialspoint;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ConfigurableApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
// Let us raise a start event.
context.start();
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
// Let us raise a stop event.
context.stop();
}
}
Yapılandırma dosyası aşağıdadır Beans.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld">
<property name = "message" value = "Hello World!"/>
</bean>
<bean id = "cStartEventHandler" class = "com.tutorialspoint.CStartEventHandler"/>
<bean id = "cStopEventHandler" class = "com.tutorialspoint.CStopEventHandler"/>
</beans>
Kaynak ve bean yapılandırma dosyalarını oluşturmayı tamamladığınızda uygulamayı çalıştırmamıza izin verin. Uygulamanızda her şey yolundaysa, aşağıdaki mesajı yazdıracaktır -
ContextStartedEvent Received
Your Message : Hello World!
ContextStoppedEvent Received
İsterseniz, kendi özel etkinliklerinizi yayınlayabilir ve daha sonra bu özel olaylara karşı herhangi bir işlem yapmak için aynısını yakalayabilirsiniz. Kendi özel etkinliklerinizi yazmakla ilgileniyorsanız , İlkbaharda Özel Etkinlikler'i kontrol edebilirsiniz .