Home  >  Article  >  Java  >  SpringBoot listener pattern example analysis

SpringBoot listener pattern example analysis

王林
王林forward
2023-05-12 21:40:181054browse

1. Event ApplicationEvent

ApplicationEvent is an abstract class. Its inheritance relationship is expanded on the idea as shown in the figure:

SpringBoot listener pattern example analysis

##It can be seen that the event types defined by SpringBoot is extremely rich.

2. Listener ApplicationListener

ApplicationListener 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&#39;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 ApplicationEventMulticaster

ApplicationEventMulticaster 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:

SpringBoot listener pattern example analysis

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete