zoukankan      html  css  js  c++  java
  • org.springframework.context.event.AbstractApplicationEventMulticaster

    private Collection<ApplicationListener<?>> retrieveApplicationListeners(ResolvableType eventType, Class<?> sourceType, AbstractApplicationEventMulticaster.ListenerRetriever retriever) {
    LinkedList allListeners = new LinkedList();
    Object beanFactory = this.retrievalMutex;
    LinkedHashSet listeners;
    LinkedHashSet listenerBeans;
    synchronized(this.retrievalMutex) {
    listeners = new LinkedHashSet(this.defaultRetriever.applicationListeners);
    listenerBeans = new LinkedHashSet(this.defaultRetriever.applicationListenerBeans);
    }

    Iterator beanFactory1 = listeners.iterator();

    while(beanFactory1.hasNext()) {
    ApplicationListener listener = (ApplicationListener)beanFactory1.next();
    if(this.supportsEvent(listener, eventType, sourceType)) {
    if(retriever != null) {
    retriever.applicationListeners.add(listener);
    }

    allListeners.add(listener);
    }
    }

    if(!listenerBeans.isEmpty()) {
    BeanFactory beanFactory2 = this.getBeanFactory();
    Iterator listener2 = listenerBeans.iterator();

    while(listener2.hasNext()) {
    String listenerBeanName = (String)listener2.next();

    try {
    Class listenerType = beanFactory2.getType(listenerBeanName);
    if(listenerType == null || this.supportsEvent(listenerType, eventType)) {
    ApplicationListener listener1 = (ApplicationListener)beanFactory2.getBean(listenerBeanName, ApplicationListener.class);
    if(!allListeners.contains(listener1) && this.supportsEvent(listener1, eventType, sourceType)) {
    if(retriever != null) {
    retriever.applicationListenerBeans.add(listenerBeanName);
    }

    allListeners.add(listener1);
    }
    }
    } catch (NoSuchBeanDefinitionException var13) {
    ;
    }
    }
    }

    AnnotationAwareOrderComparator.sort(allListeners);
    return allListeners;
    }


    org.springframework.context.event.AbstractApplicationEventMulticaster

  • 相关阅读:
    字符串的格式化操作
    了解格式化输出,字符串和编码
    面试题2
    面试题1
    设计算法1
    C++ STL容器的理解
    网络是怎样连接的-路由器的附加功能
    网络是怎样连接的-路由器的包转发操作(下)
    网络是怎样连接的-路由器的包转发操作(上)
    网络是怎样连接的-交换机的包转发操作
  • 原文地址:https://www.cnblogs.com/softidea/p/5727242.html
Copyright © 2011-2022 走看看