ApplicationEvent는 그림과 같이 상속 관계가 확장됩니다.
SpringBoot에서 정의한 이벤트 유형이 매우 풍부하다는 것을 알 수 있습니다.
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'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; } }
ApplicationEventMulticaster는 정의하는 인터페이스입니다. 리스너 추가, 리스너 삭제, 이벤트 전파 및 기타 메소드
SpringBoot는 이벤트 브로드캐스터 SimpleApplicationEventMulticaster를 구현합니다. 상속 관계는 그림과 같습니다.
위 내용은 SpringBoot 리스너 패턴 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!