zoukankan      html  css  js  c++  java
  • springBoot的事件机制---GenericApplicationListener用法

    springBoot的事件机制---GenericApplicationListener用法

    什么是ApplicationContext?

    • 它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。 ApplicationContext则是应用的容器。
    • Spring把Bean(object)放在容器中,需要用就通过get方法取出来。

    ApplicationEvent

    • 是个抽象类,里面只有一个构造函数和一个长整型的timestamp。
    • springboot的event的类型:
      • ApplicationStartingEvent
      • ApplicationEnvironmentPreparedEvent
      • ApplicationContextInitializedEvent
      • ApplicationPreparedEvent
      • ContextRefreshedEvent
      • ServletWebServerInitializedEvent
      • ApplicationStartedEvent
      • ApplicationReadyEvent

    ApplicationListener

    • 是一个接口,里面只有一个onApplicationEvent方法。所以自己的类在实现该接口的时候,要实现该方法。

    ApplicationListener的封装类

    • GenericApplicationListener
    • GenericApplicationListenerAdapter
    • SmartApplicationListener

    关系

    • 如果在上下文中部署一个实现了ApplicationListener接口的bean,那么每当在一个ApplicationEvent发布到 ApplicationContext时,这个bean得到通知。其实这就是标准的Oberver设计模式。

    注意

    • 要配置META-INF/spring.factories文件,并在文件中实现

    使用

    // 第一种方式
    public class AiInfluxdbApplicationListener implements GenericApplicationListener {
        @Override
        public int getOrder() {
            return Ordered.LOWEST_PRECEDENCE;
        }
    
        @Override
        public boolean supportsEventType(ResolvableType eventType) {
            return ApplicationReadyEvent.class.isAssignableFrom(eventType.getRawClass());
        }
    
        @Override
        public void onApplicationEvent(ApplicationEvent event) {
            System.out.print("here is ApplicationReadyEvent");
    
        }
    }
    //第二种方式
    public class ConfigApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
    
        @Override
        public int getOrder() {
            return HIGHEST_PRECEDENCE;
        }
    
        @Override
        public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
    
        }
    
    }
    
    //META-INF/spring.factories文件定义
    org.springframework.context.ApplicationListener=
    com.demotest.core.ApplicationStartListener
    
  • 相关阅读:
    [rrdtool]监控和自己主动绘图,简单的监控.md
    64位Windows操作系统中的注冊表
    (转载)正向代理与反向代理的区别
    (转载)数据库表分割技术浅析(水平分割/垂直分割/库表散列)
    JavaWeb学习总结(四十九)——简单模拟Sping MVC
    JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
    JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
    JNDI学习总结(一)——JNDI数据源的配置
    哈佛图书馆墙上的训言
    少走弯路的10条忠告
  • 原文地址:https://www.cnblogs.com/frankltf/p/11383891.html
Copyright © 2011-2022 走看看