Die Verwendung von @EventListener-annotation auf mehreren Veranstaltungen im Frühjahr
Erscheint dies wie eine ziemlich geradlinig Frage zu sein, aber ich kann nicht scheinen, um die Antwort zu finden überall.
Im Frühjahr, ich kann ein listener für ein Ereignis mithilfe des @EventListener Anmerkungen, wie diese:
@Component
public class MyListener {
@EventListener
public void handleEvent(ContextRefreshedEvent event) {
...
}
}
Aber was, wenn ich die gleiche Methode für die überwachung mehrerer Ereignisse und anders handeln basiert das Ereignis passiert?
Intuitiv, ich denke, etwas ähnlich wie diese:
@Component
public class MyListener {
@EventListener
public void handleEvents(ContextRefreshedEvent event, ContextStopped event) {
String event;
if(event instanceof ContextRefreshedEvent)
event = "Refreshed";
if(event instanceof ContextStoppedEvent)
event = "Stopped";
}
}
Was ist der richtige Weg für die EventListener-Kommentar zu hören, um mehrere Ereignisse, und wie kann die gleiche Methode unterscheiden, basierend auf dem tatsächlichen Ereignis, das geschieht?
Vielen Dank.
- So etwas wie dieser?
- Sie sind auf der Suche, um zu hören, benutzerdefinierte Ereignisse oder Veranstaltungen Frühjahr?
- Meist benutzerdefinierte Ereignisse
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nominell leicht erstellen Sie einen Ereignis-listener hört für mehrere Ereignisse:
Aber offensichtlich ist dieser Ansatz nicht geben Ihnen Zugriff auf das zugrunde liegende Ereignis. Auf der Basis der javadoc für
EventListener
es scheint nicht möglich zu sein, zu tun, was Sie vorschlagen,Damit es nicht angezeigt sein, einen Mechanismus zu verbrauchen, mehrere Ereignisse und nehmen eine andere Handlung, die darauf beruht, den Körper von diesen Veranstaltungen. Ich würde vorschlagen, dass dies nicht notwendig sein, obwohl, können Sie immer registrieren von event-spezifischen
@EventListener
Methoden, und nur dann haben Sie rufen eine gemeinsame Methode durchführen, gemeinsame Funktionalität.Quelle: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/event/EventListener.html
Seit dem Frühjahr 4.2 können Sie der Unterklasse in der Methodendeklaration alle Ereignisse behandelt, denen reicht diese Unterklasse:
Außerdem können Sie die schmale Liste der Ereignisse mit Kommentar Attribut:
Nicht warum Sie so etwas tun.
Vom
SpringFramework 4.2
können Sie veröffentlichen Ereignisse, die ohne die VerlängerungApplicationEvent
.Als Sie antwortete, Sie wollen meist hören Sie benutzerdefinierte Ereignisse. Sie können so etwas wie dies tun.
Erstellen Sie eine Basisklasse namens
BaseEvent
.Betrachten, die als Basisklasse, wenn Sie veröffentlichen möchten, eine benutzerdefinierte
Event
.Nun erstellen zwei benutzerdefinierte Ereignisse genannt
Example1Event
undExample2Event
.Example1Event
KlasseExample2Event
KlasseIhre
EventListener
würde wie folgt Aussehen.Dieser Arbeit wird für das, was Sie tun möchten.
Können Sie mehrere EventListener für jedes einzelne Ereignis.