عندما يتم نشر حدث على ApplicationContext المقدمة بواسطة الربيع ويتم اكتشافه بواسطة المستمع ، سيتم تنفيذ طريقة المعالجة المقابلة.
الحدث نفسه <br /> الحدث هو فئة مخصصة تحتاج إلى وراثة ApplicationEvent التي توفرها الربيع.
datapublic class myevent يمتد ApplicationEvent {private string msg ؛ MyEvent العامة (مصدر الكائن ، سلسلة msg) {super (source) ؛ this.msg = msg ؛ }} الاستماع الحدث
تتمثل الطريقة الأساسية في تطبيق واجهة ApplicationListener ، وتخصيص المستمع ، وتنفيذ طريقة onApplicationEvent() ، ثم إضافتها إلى ApplicationContext .
على سبيل المثال:
الطبقة العامة MyListener تنفذ ApplicationListerener <MyEvent> {Override public void onapplicationEvent (حدث myevent) {system.out.print ("حدث myevent") ؛ }} ... // أضف مستمعًا إلى فئة بدء التشغيل من springboot public static void main (string [] args) {springapplication application = new SpringApplication (myapplication.class) ؛ application.addlisteners (new MyListener ()) ؛ application.run (args) ؛ } يمكنك أيضًا استخدام event @ EventListener التعليق التوضيحي (الموصى به): المبدأ هو مسح هذا التعليق التوضيحي وإنشاء مستمع وإضافته إلى ApplicationContext .
@component @slf4jpublic class myEventHandler {EventListener public void genevent (حدث myevent) { Log.info ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- إطلاق الحدث
يمكن نشره من خلال طريقة نشر كائن السياق ConfigurableApplicationContext::publishEvent() .
يمكنك أيضًا تنفيذ واجهة ApplicationEventPublisherAware للنشر (الموصى بها).
@component@slf4jpublic class eventservice applicationeventpublisheraware {public ApplicationEventPublisher Publisher ؛ Override public void setapplicationeventpublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = applicationEventPublisher ؛ } السلسلة العامة doeventwork (سلسلة msg) { log.info("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- msg); Publisher.PublishEvent (حدث) ؛ رمز الاختبار
@SpringBoottest @runwith (SpringRunner.Class) الفئة العامة eventservicetest {Autowired Private EventService Service ؛ test public void eventTest () {String msg = "Java Code" ؛ service.doeventwork (msg) ؛ }} يلاحظ
إذا كانت هناك علاقة ميراث بين الحدثين ، فسيتم الاستماع إلى حدث الفئة الفرعية أولاً ، ثم يتم الاستماع إلى فئة الأصل بعد المعالجة.
// myevent2 يمتد myevent@component@slf4jpublic class myeventHandler {EventListener public void genevent (حدث myEvent) { Log.info ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- log.info (----------------------------عندما أنشر حدث فئة فرعية MyEvent2 ، يكون السجل كما يلي:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.