Wenn ein Ereignis in den von Spring bereitgestellten Anwendungscontext veröffentlicht wird und vom Hörer erkannt wird, wird die entsprechende Verarbeitungsmethode ausgeführt.
Das Ereignis selbst <BR /> ist eine benutzerdefinierte Klasse, die ApplicationEvent erben muss.
@Datapublic Class MyEvent erweitert ApplicationEvent {private String msg; public myEvent (Objektquelle, String msg) {Super (Quelle); this.msg = msg; }} Ereignishören
Die grundlegende Methode besteht darin, die ApplicationListener -Schnittstelle zu implementieren, einen Listener anzupassen, onApplicationEvent() -Methode () zu implementieren und dann ApplicationContext hinzuzufügen.
Zum Beispiel:
public class myListener implementiert applicationListener <myevent> {@Override public void OnapplicationEvent (Myevent Event) {System.out.print ("Sprechen myevent event"); }} ... // Hörer zur Startklasse von Springboot Public static void main (String [] args) {SpringApplication Application = new Springapplication (MyApplication.Class); Application.AddListeners (New MyListener ()); application.run (args); } Sie können auch die Annotation @ EventListener (empfohlen) verwenden: Das Prinzip besteht darin, diese Annotation zu scannen, einen Hörer zu erstellen und ihn ApplicationContext hinzuzufügen.
@Component @Slf4JPublic Class MyeventHandler {@EventListener public void handleEvent (MyEvent Event) { log.info ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ereignisveröffentlichung
Es kann über die Context -Objekt -Publishing -Methode ConfigurableApplicationContext::publishEvent() veröffentlicht werden.
Sie können auch die ApplicationEventPublisherAware -Schnittstelle implementieren (empfohlen).
@Component@SLF4JPublic Class EventService implementiert ApplicationEventPublisheraware {public ApplicationEventPublisher Publisher; @Override public void setApplicationEventPublisher (ApplicationEventPublisher ApplicationEventPublisher) {this.publisher = ApplicationEventPublisher; } public String doeventwork (String msg) { log.info("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- msg); Publisher.PublishEvent (Ereignis); Testcode
@SpringBoottest @Runwith (springrunner.class) public class EventServicetest {@autowired Private Eventservice Service; @Test public void eventTest () {String msg = "Java Code"; Service.DoEventwork (MSG); }} Beachten
Wenn zwischen den beiden Ereignissen eine Vererbungsbeziehung besteht, wird das Unterklassenereignis zuerst angehört, und dann wird die übergeordnete Klasse nach der Verarbeitung angehört.
// Myevent2 erweitert myevent@component@slf4jpublic class myeventHandler {@EventListener public void HandleEvent (Myevent Event) { log.info ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. log.info ("-------------------------- Ereignis 2: {}", Ereignis.getMsg ());Wenn ich ein Subklassenereignis Myevent2 veröffentliche, lautet das Protokoll wie folgt:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.