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
    
  • 相关阅读:
    【HDU 1007】Quoit Design
    【BZOJ 4516】【SDOI 2016】生成魔咒
    【SPOJ 1812】Longest Common Substring II
    NOI2014 全国互测Round2
    1231: [Usaco2008 Nov]mixup2 混乱的奶牛
    3529: [Sdoi2014]数表
    2693: jzptab
    2565: 最长双回文串
    1562: [NOI2009]变换序列
    1965: [Ahoi2005]SHUFFLE 洗牌
  • 原文地址:https://www.cnblogs.com/frankltf/p/11383891.html
Copyright © 2011-2022 走看看