PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

SpringBoot监听器模式实例分析

王林
王林 转载
2023-05-12 21:40:18 731浏览

1、事件ApplicationEvent

ApplicationEvent是一个抽象类,idea上展开其继承关系如图:

SpringBoot监听器模式实例分析

可见SpringBoot所定义的事件类型是极为丰富的。

2、监听器ApplicationListener

ApplicationListener是一个接口,我们也可以通过实现这个接口来定义自己的监听器,可以通过与事件初始化器方式相似的方式进行加载。

@FunctionalInterface
public interface ApplicationListener extends EventListener {
	/**
	 * Handle an application event.
	 * @param event the event to respond to
	 */
	void onApplicationEvent(E event);
}

我们可以看到代码中它接受一个上文中提到的事件泛型,这代表了此监听器关注的事件;

还有一种实现监听器的方式,即实现SmartApplicationListener接口,SmartApplicationListener继承了ApplicationListener接口,通过这种方式实现监听器,可以同时注册多个感兴趣的事件,只需实现接口的supportsEventType方法即可;

public interface SmartApplicationListener extends ApplicationListener, Ordered {
	/**
	 * Determine whether this listener actually supports the given event type.
	 * @param eventType the event type (never {@code null})
	 */
	boolean supportsEventType(Class eventType);
	/**
	 * Determine whether this listener actually supports the given source type.
	 * 

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.  * 

The default implementation returns {@link #LOWEST_PRECEDENCE}.  */ @Override default int getOrder() { return LOWEST_PRECEDENCE; } }

3、事件广播器ApplicationEventMulticaster

ApplicationEventMulticaster是一个接口,定义了添加监听器、删除监听器、传播事件等方法;

SpringBoot为我们实现了SimpleApplicationEventMulticaster这一事件广播器,继承关系如图所示:

SpringBoot监听器模式实例分析

以上就是SpringBoot监听器模式实例分析的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除