Penanganan Acara di Musim Semi
Anda telah melihat di semua chapter bahwa inti dari Spring adalah ApplicationContext, yang mengatur seluruh siklus hidup biji. ApplicationContext menerbitkan jenis kejadian tertentu saat memuat kacang. Misalnya, ContextStartedEvent diterbitkan saat konteks dimulai dan ContextStoppedEvent diterbitkan saat konteks dihentikan.
Penanganan dalam acara ApplicationContext disediakan melalui ApplicationEvent kelas dan ApplicationListener antarmuka. Oleh karena itu, jika kacang mengimplementasikan ApplicationListener , maka setiap kali ApplicationEvent dipublikasikan ke ApplicationContext, kacang tersebut akan diberi tahu.
Musim semi menyediakan acara standar berikut -
Sr.No. | Acara & Deskripsi Bawaan Musim Semi |
---|---|
1 | ContextRefreshedEvent Peristiwa ini diterbitkan ketika ApplicationContext diinisialisasi atau disegarkan. Ini juga bisa dimunculkan menggunakan metode refresh () pada antarmuka ConfigurableApplicationContext . |
2 | ContextStartedEvent Peristiwa ini diterbitkan ketika ApplicationContext dimulai menggunakan metode start () pada antarmuka ConfigurableApplicationContext . Anda dapat meminta database Anda atau Anda dapat memulai ulang aplikasi apa pun yang terhenti setelah menerima acara ini. |
3 | ContextStoppedEvent Peristiwa ini diterbitkan ketika ApplicationContext dihentikan menggunakan metode stop () pada antarmuka ConfigurableApplicationContext . Anda dapat melakukan pekerjaan rumah tangga yang diperlukan setelah menerima acara ini. |
4 | ContextClosedEvent Peristiwa ini diterbitkan ketika ApplicationContext ditutup menggunakan metode close () pada antarmuka ConfigurableApplicationContext . Konteks tertutup mencapai akhir hidupnya; itu tidak dapat disegarkan atau dimulai ulang. |
5 | RequestHandledEvent Ini adalah acara khusus web yang memberi tahu semua kacang bahwa permintaan HTTP telah dilayani. |
Penanganan acara Spring bersifat single-threaded, jadi jika sebuah acara dipublikasikan, hingga dan kecuali semua penerima mendapatkan pesan, prosesnya diblokir dan aliran tidak akan dilanjutkan. Oleh karena itu, kehati-hatian harus diberikan saat mendesain aplikasi Anda jika penanganan acara akan digunakan.
Mendengarkan Kejadian Konteks
Untuk mendengarkan acara konteks, kacang harus mengimplementasikan antarmuka ApplicationListener yang hanya memiliki satu metodeonApplicationEvent(). Jadi, mari kita tulis contoh untuk melihat bagaimana peristiwa menyebar dan bagaimana Anda dapat menempatkan kode Anda untuk melakukan tugas yang diperlukan berdasarkan peristiwa tertentu.
Mari kita memiliki IDE Eclipse yang berfungsi dan mengambil langkah-langkah berikut untuk membuat aplikasi Spring -
Langkah | Deskripsi |
---|---|
1 | Buat proyek dengan nama SpringExample dan buat paket com.tutorialspoint di bawahsrc folder dalam proyek yang dibuat. |
2 | Tambahkan pustaka Spring yang diperlukan menggunakan opsi Add External JARs seperti yang dijelaskan di bab Contoh Spring Hello World . |
3 | Buat kelas Java HelloWorld , CStartEventHandler , CStopEventHandler dan MainApp di bawah paket com.tutorialspoint . |
4 | Buat file konfigurasi Beans Beans.xml di bawahsrc map. |
5 | Langkah terakhir adalah membuat konten dari semua file Java dan file Konfigurasi Bean dan menjalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut adalah konten dari HelloWorld.java mengajukan
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);
}
}
Berikut ini adalah konten dari CStartEventHandler.java mengajukan
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");
}
}
Berikut ini adalah konten dari CStopEventHandler.java mengajukan
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");
}
}
Berikut ini adalah konten dari MainApp.java mengajukan
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();
}
}
Berikut adalah file konfigurasinya 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>
Setelah Anda selesai membuat file konfigurasi source dan bean, mari kita jalankan aplikasi. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut -
ContextStartedEvent Received
Your Message : Hello World!
ContextStoppedEvent Received
Jika mau, Anda dapat memublikasikan acara khusus Anda sendiri dan nanti Anda dapat merekamnya untuk mengambil tindakan apa pun terhadap acara khusus tersebut. Jika Anda tertarik untuk membuat acara khusus Anda sendiri, Anda dapat memeriksa Acara Kustom di Musim Semi.