003 事件专题

Posted trekxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了003 事件专题相关的知识,希望对你有一定的参考价值。

一 . 概述

  spring为我们提供了事件驱动的编程方式.首先我们就需要了解一下事件的基本概念在  

  spring之中对应的类.

  事件源 : 事件产生的地点,也就是事件发布的地方.

    所有的IOC容器都实现了ApplicationEventPublisher接口,也就是具有容器事件的发布能力.

      因此我们想要发布一个事件,我们只需要使用IOC容器就能发布一个事件.

       事件监听器: 在spring之中,使用ApplicationListener完成事件监听器的创建.

  事件源 : 使用ApplicationEvent完成事件的创建.


 二 .三个核心对象的介绍

[1] 事件源 : 

  我们知道了spring的IOC就能发布事件,因此我们可以使用IOC容器作为事件源.另外使用ApplicationContextAware接口就能

    获取到IOC容器.

[2]事件监听器:

public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

    void onApplicationEvent(E event);

}

 上面拿到接口之中定义了事件监听器接口,我们如果想要创建一个事件监听器就需要实现这个接口.

同时我们看到了泛型操作,这个泛型描述的就是事件对象.

技术分享图片

我们看到了一个容器刷新的事件,这个事件是我们使用最多的一个事件了.

如果我们想要在容器创建完成之后,使用其中的Bean自动完成某些任务,我们就可以使用这个方式来完成.


 

三 .测试代码 

//创建一个自己的监听器
public class MyListener implements ApplicationListener<ApplicationEvent>{

    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        //在这里我们监听了所有的容器事件
        if(event instanceof ContextRefreshedEvent) {
            //此时发出了容器的刷新事件
            if(((ApplicationContextEvent) event).getApplicationContext().getParent() == null) {
                // 为什么要进行这样的判断呢 ? 因为在我们的springmvc和spring整合的时候,会发出两次该事件.
                //我们需要保证必须使spring容器完成之后才能进行事件的响应
                System.out.println("容器刷新了....");
            }
        }
    }
}

创建一个事件监听器.

@Configuration
@Import(MyListener.class)
public class Config {

}
public class MainTest {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
    }
}

我们发现我们运行main方法的时候,会自动的实现事件监听.


 

四 .使用注解完成事件监听

   

以上是关于003 事件专题的主要内容,如果未能解决你的问题,请参考以下文章

LEETCODE 003 找出一个字符串中最长的无重复片段

力扣专题——剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

[新增EA003考勤系统演示片段]全程字幕-22套UML+Enterprise Architect建模示范视频

003-代码补全,运行,调试

android 入门 003 (点击事件)

JQuery_003_事件绑定与解绑