Application下抽象子类ApplicationContextEvent的下面有4个已经实现好的事件

  1. ContextClosedEvent(容器关闭时)
  2. ContextRefreshedEvent(容器刷新是)
  3. ContextStartedEvent(容器启动时候)
  4. ContextStoppedEvent(容器停止的时候)

同样,这四个事件都继承了ApplicationEvent,如果我们想自定义事件,也可以通过继承ApplicationEvent来实现

使用示例:

1.新建一个MyEvent的类,继承ApplicationEvent抽象类

public class MyEvent extends ApplicationEvent {
//存放构造器送入的值
private String msg;
//构造器参数可以随意设置,这里为了方便调试,设置为字符串
public MyEvent(String msg) {
super(msg);
this.msg=msg;
}
//自定义一个方法,这个方法也可以随意写,这里也是测试用
public void myevent(){
System.out.println("********My event**************");
System.out.println(msg);
System.out.println("*******************************");
}
}

2.新建一个监听器MyListener

//注入IOC容器中
@Service("myListener")
public class MyListener implements ApplicationListener<ApplicationEvent> {
//调用ApplicationContext.publishEvent方法时会触发执行该方法
@Override
public void onApplicationEvent(ApplicationEvent event) {
//判断事件为MyEvent时候执行
if(event instanceof MyEvent){
//强制转换
MyEvent evt=(MyEvent) event;
//执行自定义事件中的自定义方法
evt.myevent();
}
} }

3.在测试类中发布通知publishEvent;

public class Test {
  public static void main(String[] args) {
   ApplicationContext context = new ClassPathXmlApplicationContext ("classpath: applicationContext.xml");
   MyEvent event = new MyEvent ("hello");
     context.publishEvent(event);
}
}

********My event**************

hello

*******************************

Spring事件和监听器的更多相关文章

  1. Spring Boot 启动事件和监听器,太强大了!

    大家都知道,在 Spring 框架中事件和监听无处不在,打通了 Spring 框架的任督二脉,事件和监听也是 Spring 框架必学的核心知识之一. 一般来说,我们很少会使用到应用程序事件,但我们也不 ...

  2. 深入理解Spring事件机制(一):广播器与监听器的初始化

    前言 Spring 从 3.x 开始支持事件机制.在 Spring 的事件机制中,我们可以令一个事件类继承 ApplicationEvent 类,然后将实现了 ApplicationListener ...

  3. spring发布和接收定制的事件(spring事件传播)

    spring发布和接收定制的事件(spring事件传播) 2012-12-26 20:05 22111人阅读 评论(2) 收藏 举报  分类: 开源技术(如Struts/spring/Hibernat ...

  4. spring 事件(Application Event)

    spring 事件为bean 与 bean之间传递消息.一个bean处理完了希望其余一个接着处理.这时我们就需要其余的一个bean监听当前bean所发送的事件. spring事件使用步骤如下: 1.先 ...

  5. Spring事件解析

    首先介绍Spring事件相关类的关系: 其中EventListener与EventObject均是Java SE的范畴,源码如下: package java.util; public interfac ...

  6. Spring 事件

    JDK事件 java通过java.util.EventObject类和java.util.EventListener接口描述事件和监听器 事件源,事件的产生者,任何一个EventObject都必须拥有 ...

  7. spring事件机制

    前置知识补充: 程序里面所谓的“上下文”就是程序的执行环境,打个比方:你就相当于web程序,你的房子就相当于web程序的上下文,你可以在家里放东西,也可以取东西,你的衣食住行都依赖这个房子,这个房子就 ...

  8. Spring事件监听Demo

    Spring事件监听实现了观察者模式.本Demo在junit4测试环境中实现 主要有三个类事件类.监听器类.事件发布类(入口) 事件类必须继承 ApplicationEvent,代码如下: impor ...

  9. Spring事件机制详解

    一.前言 说来惭愧,对应Spring事件机制之前只知道实现 ApplicationListener 接口,就可以基于Spring自带的事件做一些事情(如ContextRefreshedEvent),但 ...

随机推荐

  1. Node.js 进程平滑离场剖析

    本文由云+社区发表 作者:草小灰 使用 Node.js 搭建 HTTP Server 已是司空见惯的事.在生产环境中,Node 进程平滑重启直接关系到服务的可靠性,它的重要性不容我们忽视.既然是平滑重 ...

  2. tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议

    本文由云+社区发表 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样 ...

  3. JS的forEach和map方法的区别

    一.前言 forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each() ...

  4. 大数据利器Hive

    序言:在大数据领域存在一个现象,那就是组件繁多,粗略估计一下轻松超过20种.如果你是初学者,瞬间就会蒙圈,不知道力往哪里使.那么,为什么会出现这种现象呢?在本文的开头笔者就简单的阐述一下这种现象出现的 ...

  5. Docker多主机管理(八)--技术流ken

    docker多主机管理 前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和 ...

  6. 解决虚拟机连接不上外网,不能互相ping通

    0.解决虚拟机连接不上外网,不能互相ping通 直接在linux系统下,编辑修改如下文件: //编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0 [root@ ...

  7. 服务器SSH连接时间设置

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,造成这个问题的原因便是SSH服务有自己独特的会话连接机制. 解决方案: 1.设置服务器向SSH客户端连接会话发送频率和时间 v ...

  8. c#基础,单线程,跨线程访问和线程带参数

    using System; using System.Collections.Generic; using System.Threading; using System.Windows.Forms; ...

  9. 【Linux】常用命令,持续更新

    Linux 一.linux的组成 内核,shell,文件系统,应用程序 二.linux目录结构 bin,sbin,home,root,boot,dev,etc,lib, 三.文件目录操作 ls,cd, ...

  10. php 关于经纬度距离计算方法

    1.PHP实现通过经纬度计算距离 单位为公里 function getdistance($lng1,$lat1,$lng2,$lat2)//根据经纬度计算距离 { //将角度转为狐度  $radLat ...