Ketika suatu peristiwa diposting ke ApplicationContext yang disediakan oleh Spring dan terdeteksi oleh pendengar, metode pemrosesan yang sesuai akan dieksekusi.
Acara itu sendiri <BR /> Event adalah kelas khusus yang perlu mewarisi ApplicationEvent yang disediakan oleh Spring.
Kelas @DataPublic MyEvent memperluas ApplicationEvent {private string msg; public myEvent (sumber objek, string msg) {super (sumber); this.msg = msg; }} Mendengarkan acara
Metode dasarnya adalah mengimplementasikan antarmuka ApplicationListener , menyesuaikan pendengar, mengimplementasikan metode onApplicationEvent() , dan kemudian menambahkannya ke ApplicationContext .
Misalnya:
MyListener kelas publik mengimplementasikan ApplicationListener <myEvent> {@Override public void onApplicationEvent (MyEvent Event) {System.out.print ("Speaking MyEvent Event"); }} ... // Tambahkan pendengar ke kelas startup springboot public static void main (string [] args) {springApplication application = new springApplication (myApplication.class); application.addlisteners (myListener baru ()); application.run (args); } Anda juga dapat menggunakan anotasi @ EventListener (disarankan): Prinsipnya adalah memindai anotasi ini, membuat pendengar dan menambahkannya ke ApplicationContext .
@Component @slf4jpublic kelas myeventhandler {@eventListener public void handleEvent (myevent event) { log.info ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Rilis acara
Ini dapat dipublikasikan melalui metode penerbitan objek konteks ConfigurableApplicationContext::publishEvent() .
Anda juga dapat mengimplementasikan antarmuka ApplicationEventPublisherAware untuk menerbitkan (disarankan).
@Component@slf4jpublic class eventService mengimplementasikan ApplicationEventPubLisherAware {PublicEventPublisher Publisher; @Override public void setApplicationEventPublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = ApplicationEventPublisher; } public String doeventwork (string msg) { log.info ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Publish.publishevent (acara); Kode uji
@Springboottest @runwith (springrunner.class) kelas public eventservicetest {@autowired private eventservice service; @Test public void eventTest () {string msg = "java code"; service.doeventwork (MSG); }} Melihat
Jika ada hubungan warisan antara dua peristiwa, acara subclass akan didengarkan terlebih dahulu, dan kemudian kelas induk akan didengarkan setelah diproses.
// myevent2 memperluas myevent@component@slf4jpublic kelas myeventhandler {@eventListener public void handleevent (myevent event) { log.info ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LOG.Info ("------------------Ketika saya menerbitkan acara subkelas MyEvent2, log adalah sebagai berikut:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.