ApplicationEvent is an abstract class. Its inheritance relationship is expanded on the idea as shown in the figure:
##It can be seen that the event types defined by SpringBoot is extremely rich. 2. Listener ApplicationListenerApplicationListener is an interface. We can also define our own listener by implementing this interface, which can be loaded in a similar way to the event initializer.@FunctionalInterface public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { /** * Handle an application event. * @param event the event to respond to */ void onApplicationEvent(E event); }We can see that in the code it accepts an event generic mentioned above, which represents the event that this listener is concerned about; There is also a way to implement a listener, That is, implement the SmartApplicationListener interface. SmartApplicationListener inherits the ApplicationListener interface. By implementing the listener in this way, you can register multiple events of interest at the same time. You only need to implement the supportsEventType method of the interface;
public interface SmartApplicationListener extends ApplicationListener<ApplicationEvent>, Ordered { /** * Determine whether this listener actually supports the given event type. * @param eventType the event type (never {@code null}) */ boolean supportsEventType(Class<? extends ApplicationEvent> eventType); /** * Determine whether this listener actually supports the given source type. * <p>The default implementation always returns {@code true}. * @param sourceType the source type, or {@code null} if no source */ default boolean supportsSourceType(@Nullable Class<?> sourceType) { return true; } /** * Determine this listener's order in a set of listeners for the same event. * <p>The default implementation returns {@link #LOWEST_PRECEDENCE}. */ @Override default int getOrder() { return LOWEST_PRECEDENCE; } }3. Event Broadcasting ApplicationEventMulticasterApplicationEventMulticaster is an interface that defines methods such as adding listeners, deleting listeners, and propagating events; SpringBoot implements the event broadcaster SimpleApplicationEventMulticaster for us. The inheritance relationship is as shown in the figure Shown:
The above is the detailed content of SpringBoot listener pattern example analysis. For more information, please follow other related articles on the PHP Chinese website!