Spring内置事件以及自定义事件

1. Spring内置的事件有哪些?

  • Spring中的事件是一个 ApplicationEvent类的子类,由实现 ApplicationEventPublisherAware 接口的类发送,实现 ApplicationListener 接口的类监听。
  • Spring中已经定义了一组内置事件,这些事件由ApplicationContext容器发出。(ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent、ContextClosedEvent、RequestHandledEvent)
  • 要监听ApplicationContext事件,监听类应该实现ApplicationListener接口并重写onApplicationEvent()方法。
package tutorialspointEvent;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.context.event.ContextStoppedEvent;

public class CStartEventHandler implements ApplicationListener<ContextStartedEvent>  {
    @Override
    public void onApplicationEvent(ContextStartedEvent contextStartedEvent) {
        System.out.println("ContextStartedEvent收到了");
    }
}

2. 怎么使用自定义事件?

  • 创建事件类 – 扩展ApplicationEvent类,创建事件类。
import org.springframework.context.ApplicationEvent;

/*
自定义事件
 */
public class CustomEvent extends ApplicationEvent {

    public CustomEvent(Object source) {
        super(source);
    }
    public String toString(){
        return "My Custom Event";
    }
}
  • 创建发送类 – 发送类获取ApplicationEventPublisher实例发送事件。
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;

/*
事件发布者
 */
public class CustomEventPublisher implements ApplicationEventPublisherAware {

    private ApplicationEventPublisher publisher;
    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.publisher = applicationEventPublisher;
    }

    public void publish() {
        CustomEvent ce = new CustomEvent(this);
        publisher.publishEvent(ce);
        System.out.println("发布了一个"+"CustomEvent");
    }
}
  • 创建监听类 – 实现ApplicationListener接口,创建监听类。
import org.springframework.context.ApplicationListener;
public class CustomEventHandler implements ApplicationListener<CustomEvent> {
    @Override
    public void onApplicationEvent(CustomEvent customEvent) {
        System.out.println("处理了"+customEvent.toString());
    }
}

原文地址:https://www.cnblogs.com/0ffff/p/11370307.html

时间: 2024-11-01 20:59:41

Spring内置事件以及自定义事件的相关文章

DataGridView中内置控件常用事件使用心得

checkbox,button,imagebutton使用dataGridView1_CellContentClick private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { tb.Text+=string.Format("\r\n{0},Row:{1},Column:{2}","单元格内容单击!",e.RowIndex,e.ColumnInd

Angular中的内置指令和自定义指令

NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减少DOM操作,实现数据绑定,与业务逻辑进行交互. How: 指令主要分为两种:内置指令和自定义指令,通过下面的例子,简单记录一下如何去使用. 内置指令 在官方API文档上罗列了很多指令,内置指令可以分为:普通指令 和 事件指令,他们都是作用于HTML之上的,通过添加属性的方式来实现的.简单看一下一些

9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器

1.1  计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日志更高效. 计数器名称 计数器介绍 内置计数器 Hadoop自带的计数器,有特定的计数器名称.例如统计输入.输出的记录数量,输入输出的字节数. 自定义java枚举计数器 用户自定义的枚举型计数器,用于统计用户的特殊要求的计数器,例如统计记录中无效记录的数量. 自定义Streaming计数器 通过向标

jQuery基础(鼠标事件,表单事件,键盘事件,自定义事件 篇)

1.jQuery鼠标事件之click与dbclick事件 方法一:$ele.click()(不带参数) <div id="test">点击触发<div> $("ele").click(function(){ alert('触发指定事件') }) $("#test").click(function(){ $("ele").click() //手动指定触发事件 });   方法二:$ele.click( h

Spring —— 三种配置数据源的方式:spring内置、c3p0、dbcp

01.Spring内置数据源配置Class:DriverManagerDataSource全限定名:org.springframework.jdbc.datasource.DriverManagerDataSource不需要添加任何jar 02.apache的 dbcp数据源配置Class:BasicDataSource全限定名:org.apache.commons.dbcp.BasicDataSource需要添加:com.springsource.org.apache.commons.dbcp

Dom3级事件下自定义事件

原文出处:  http://www.w3cfuns.com/notes/11861/e21736a0b15bceca0dc7f76d77c2fb5a.html . 我拿出作者中的一段,感谢作者原创. DOM中的事件模拟(自定义事件): DOM3级还定义了自定义事件,自定义事件不是由DOM原生触发的,它的目的是让开发人员创建自己的事件.要创建的自定义事件可以由createEvent("CustomEvent"); 返回的对象有一个initCustomEvent()方法接收如下四个参数.

jQuery-3.事件篇---自定义事件

jQuery自定义事件之trigger事件 众所周知类似于mousedown.click.keydown等等这类型的事件都是浏览器提供的,通俗叫原生事件,这类型的事件是需要有交互行为才能被触发. 在jQuery通过on方法绑定一个原生事件 $('#elem').on('click', function() { alert("触发系统事件") }); alert需要执行的条件:必须有用户点击才可以.如果不同用户交互是否能在某一时刻自动触发该事件呢? 正常来说是不可以的,但是jQuery解

js事件、自定义dom事件、自定义事件

本文参考资料是:高级编程语言第三版(13章事件和22章自定义事件). 本文涉及到: 事件的组成元素. 事件优化. 模拟事件. 自定义事件的内容 js事件是什么?高级程序13章第一句话说:js与html之间的交互是通过事件实现的.事件是浏览器或者用户自身执行的某种动作,例如我们最常用到的点击事件. 1:js事件 事件流 事件处理程序 事件对象 事件类型 事件流:从页面上接收事件的顺序 事件冒泡:概念事件从最具体的元素接收事件,然后逐级向上传播到较为不具体的元素.这个概念是由ie提出. <!DOCT

5月15日上课笔记-js中 location对象的属性、document对象、js内置对象、Date事件对象、

location的属性: host: 返回当前主机名和端口号 定时函数: setTimeout( ) setInterval() 二.document对象 getElementById(); 根据ID值获取一个DOM对象 getElementsByName(); 根据name属性值获取多个Dom对象 getElementsByTagName(); 根据标签获取多个DOM对象 获取标签体内容 innerHTML 获取input的value值 value 获取下拉框选中的值 value this 代