ApplicationListenerDetector监听器判断demo

 更新时间:2023年03月14日 14:43:52   作者:无名之辈J  
这篇文章主要为大家介绍了ApplicationListenerDetector监听器判断demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Bean实例化之后

判断Bean是否是监听器,如果是监听器就将当前Bean加入监听器集合

public Object postProcessAfterInitialization(Object bean, String beanName) {
   if (bean instanceof ApplicationListener) {
      // potentially not detected as a listener by getBeanNamesForType retrieval
      Boolean flag = this.singletonNames.get(beanName);
      if (Boolean.TRUE.equals(flag)) {
         // singleton bean (top-level or inner): register on the fly
         this.applicationContext.addApplicationListener((ApplicationListener<?>) bean);
      }
      else if (Boolean.FALSE.equals(flag)) {
         if (logger.isWarnEnabled() && !this.applicationContext.containsBean(beanName)) {
            // inner bean with other scope - can't reliably process events
            logger.warn("Inner bean '" + beanName + "' implements ApplicationListener interface " +
                  "but is not reachable for event multicasting by its containing ApplicationContext " +
                  "because it does not have singleton scope. Only top-level listener beans are allowed " +
                  "to be of non-singleton scope.");
         }
         this.singletonNames.remove(beanName);
      }
   }
   return bean;
}

Bean销毁之前

如果当前Bean是监听器,就将当前Bean从监听器集合中移除

public void postProcessBeforeDestruction(Object bean, String beanName) {
   if (bean instanceof ApplicationListener) {
      try {
         ApplicationEventMulticaster multicaster = this.applicationContext.getApplicationEventMulticaster();
         multicaster.removeApplicationListener((ApplicationListener<?>) bean);
         multicaster.removeApplicationListenerBean(beanName);
      }
      catch (IllegalStateException ex) {
         // ApplicationEventMulticaster not initialized yet - no need to remove a listener
      }
   }
}

以上就是ApplicationListenerDetector监听器判断demo的详细内容,更多关于ApplicationListenerDetector监听器的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Boot 配置 Quartz 定时任务的方法

    Spring Boot 配置 Quartz 定时任务的方法

    这篇文章主要介绍了Spring Boot 配置 Quartz 定时任务的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • SpringBoot如何统一处理返回结果和异常情况

    SpringBoot如何统一处理返回结果和异常情况

    这篇文章主要介绍了SpringBoot如何统一处理返回结果和异常情况问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • maven项目test执行main找不到资源文件的问题及解决

    maven项目test执行main找不到资源文件的问题及解决

    这篇文章主要介绍了maven项目test执行main找不到资源文件的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 当mybatis返回值遇见内部类的问题

    当mybatis返回值遇见内部类的问题

    这篇文章主要介绍了当mybatis返回值遇见内部类的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SpringBoot中支持Https协议的实现

    SpringBoot中支持Https协议的实现

    本文主要介绍了SpringBoot中支持Https协议的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • java中String字符串删除空格的七种方式

    java中String字符串删除空格的七种方式

    在Java中从字符串中删除空格有很多不同的方法,本文主要介绍了java中String字符串删除空格的七种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • java编程几行代码实现买菜自由

    java编程几行代码实现买菜自由

    这篇文章主要为大家介绍了java编程几行代码实现买菜自由,需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 在Java与Kotlin之间如何进行互操作详解

    在Java与Kotlin之间如何进行互操作详解

    这篇文章主要给大家介绍了关于在Java和Kotlin之间如何进行互操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Java调用Zookeeper的实现步骤

    Java调用Zookeeper的实现步骤

    本文主要介绍了Java调用Zookeeper的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringMVC Idea 搭建 部署war的详细过程

    SpringMVC Idea 搭建 部署war的详细过程

    本文介绍了如何在IntelliJ IDEA中使用Maven模板创建一个Web项目,并详细说明了如何配置web.xml、创建springmvc-servlet.xml和application.properties文件,以及如何使用Maven打包生成WAR文件并部署到Tomcat服务器,感兴趣的朋友跟随小编一起看看吧
    2025-01-01

最新评论