> Java > java지도 시간 > SpringBoot 리스너 패턴 예제 분석

SpringBoot 리스너 패턴 예제 분석

王林
풀어 주다: 2023-05-12 21:40:18
앞으로
1107명이 탐색했습니다.

1. 이벤트 ApplicationEvent

ApplicationEvent는 그림과 같이 상속 관계가 확장됩니다.

SpringBoot 리스너 패턴 예제 분석

SpringBoot에서 정의한 이벤트 유형이 매우 풍부하다는 것을 알 수 있습니다.

2. 리스너 ApplicationListener

ApplicationListener는 이벤트 초기화 프로그램과 유사한 방식으로 로드할 수 있는 이 인터페이스를 구현하여 자체 리스너를 정의할 수도 있습니다.

@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
	/**
	 * Handle an application event.
	 * @param event the event to respond to
	 */
	void onApplicationEvent(E event);
}
로그인 후 복사

코드에서 이 리스너가 관심을 갖는 이벤트를 나타내는 위에서 언급한 일반 이벤트를 허용하는 것을 볼 수 있습니다.

리스너를 구현하는 방법, 즉 SmartApplicationListener 인터페이스를 구현하는 방법도 있습니다. SmartApplicationListener는 ApplicationListener 인터페이스를 상속합니다. 이 방법을 통해 관심 있는 여러 이벤트를 동시에 등록할 수 있습니다. 인터페이스의 supportEventType 메서드만 구현하면 됩니다.

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 이벤트 브로드캐스터 ApplicationEventMulticaster

ApplicationEventMulticaster는 정의하는 인터페이스입니다. 리스너 추가, 리스너 삭제, 이벤트 전파 및 기타 메소드

SpringBoot는 이벤트 브로드캐스터 SimpleApplicationEventMulticaster를 구현합니다. 상속 관계는 그림과 같습니다.

위 내용은 SpringBoot 리스너 패턴 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿