เมื่อมีการโพสต์เหตุการณ์ไปยัง ApplicationContext ที่จัดทำโดยฤดูใบไม้ผลิและตรวจพบโดยผู้ฟังวิธีการประมวลผลที่สอดคล้องกันจะถูกดำเนินการ
เหตุการณ์เหตุการณ์ <br /> เหตุการณ์เป็นคลาสที่กำหนดเองที่ต้องสืบทอด ApplicationEvent ที่จัดทำโดยฤดูใบไม้ผลิ
@Datapublic Class MyEvent ขยาย ApplicationEvent {Private String msg; สาธารณะ myEvent (แหล่งที่มาของวัตถุ, สตริงผงชูรส) {super (แหล่งที่มา); this.msg = msg; - การฟังเหตุการณ์
วิธีพื้นฐานคือการใช้อินเทอร์เฟซ ApplicationListener ปรับแต่งผู้ฟังใช้วิธี onApplicationEvent() จากนั้นเพิ่มลงใน ApplicationContext
ตัวอย่างเช่น:
คลาสสาธารณะ MyListener ใช้ ApplicationListener <MyEvent> {@Override โมฆะสาธารณะ onApplicationEvent (เหตุการณ์ MyEvent) {System.out.print ("การพูด MyEvent Event"); }} ... // เพิ่มผู้ฟังลงในคลาสเริ่มต้นของสปริงโบทโมฆะสาธารณะคงที่หลัก (สตริง [] args) {แอปพลิเคชัน SpringApplication = new SpringApplication (myApplication.class); Application.addListeners (New MyListener ()); application.run (args); - นอกจากนี้คุณยังสามารถใช้คำอธิบายประกอบ @ EventListener (แนะนำ): หลักการคือการสแกนคำอธิบายประกอบนี้สร้างผู้ฟังและเพิ่มลงใน ApplicationContext
@component @slf4jpublic คลาส myeventhandler {@eventListener โมฆะสาธารณะ HandleEvent (เหตุการณ์ MyEvent) { log.info ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - การเปิดตัวเหตุการณ์
มันสามารถเผยแพร่ผ่านวิธีการเผยแพร่วัตถุบริบท ConfigurableApplicationContext::publishEvent()
นอกจากนี้คุณยังสามารถใช้อินเทอร์เฟซ ApplicationEventPublisherAware เพื่อเผยแพร่ (แนะนำ)
@Component@SLF4JPublic Class Eventservice ใช้ ApplicationEventPublisherAware {Public ApplicationEventPublisher Publisher; @Override โมฆะสาธารณะ setApplicationEventPublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = ApplicationEventPublisher; } สตริงสาธารณะ DOEVENTWORK (String msg) { log.info ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Publisher.PublisheVent (เหตุการณ์); รหัสทดสอบ
@springboottest @runwith (springrunner.class) คลาสสาธารณะ EventserviceTest {@autowired Eventservice Service; @Test Public Void EventTest () {String msg = "Java Code"; Service.DoEventWork (MSG); - สังเกต
หากมีความสัมพันธ์ในการสืบทอดระหว่างสองเหตุการณ์เหตุการณ์ subclass จะถูกฟังก่อนจากนั้นคลาสหลักจะได้รับการฟังหลังจากการประมวลผล
// myEvent2 ขยาย myEvent@component@slf4jpublic คลาส MyEventHandler {@EventListener โมฆะสาธารณะ HandleEvent (เหตุการณ์ MyEvent) { log.info ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - log.info ("--------------------- เหตุการณ์การประมวลผล 2: {}", event.getmsg ());เมื่อฉันเผยแพร่เหตุการณ์ย่อย MyEvent2 บันทึกมีดังนี้:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น