代码干货 | spring中自定义Event事件的使用和浅析

news/2024/7/4 0:50:30 标签: 配置, string, Annotation, class, void
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

本文来源于阿里云-云栖社区,原文点击这里


在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring、spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务Filter过滤器interceptor拦截器等等,而这一篇我要说的是spring Event自定义事件,目前的项目中似乎没怎么用,但是这一项技术貌似还蛮重要,所以也不能不掌握。 


对于事件驱动模型的解释和理解,我觉得有一篇博客里说的非常好,尤其是在解释这个关系的时候,举的交通信号灯的例子非常贴切,这里就引用做一个简单的解释:

事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点: 
1. 首先是一种对象间的一对多的关系;最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方); 
2. 当目标发送改变(发布),观察者(订阅者)就可以接收到改变; 
3. 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉;所以就松散耦合了它们之间的关系。

引用的原文地址:http://click.aliyun.com/m/30419/(这篇文章中还讲解了有序监听和无序监听、异步事件等等,有兴趣的也可以去那里了解学习一下)当我们对事件驱动有一个简单的理解之后,就能大概知道它应该什么时候用,然后再来研究它该怎么用,单一的文字或许不太容易解释,还是先把代码弄上来,然后再结合起来解释。


首先自定义一个事件,需要继承ApplicationEvent类,相当于安装了一个没有通电,没有灯光的信号灯,需要具有信号灯的基本特征。

class="hljs java" style="margin:0px; padding:0.5em; font-size:undefined; font-family:Menlo,Monaco,Consolas,"Courier New",monospace; color:rgb(248,248,242); background:rgb(35,36,31); white-space:pre-wrap; display:block; overflow-x:auto">class="hljs-keyword" style="color:rgb(249,38,114)">package springTest5;
class="hljs-keyword" style="color:rgb(249,38,114)">import org.springframework.context.ApplicationEvent;
class="hljs-keyword" style="color:rgb(249,38,114)">public class="hljs-class" style="">class="hljs-keyword" style="color:rgb(102,217,239)">class class="hljs-title" style="">EventTest class="hljs-keyword" style="color:rgb(249,38,114)">extends class="hljs-title" style="color:rgb(166,226,46); font-style:italic">ApplicationEvent {
    class="hljs-keyword" style="color:rgb(249,38,114)">private class="hljs-keyword" style="color:rgb(249,38,114)">static class="hljs-keyword" style="color:rgb(249,38,114)">final class="hljs-keyword" style="color:rgb(249,38,114)">long serialVersionUID = class="hljs-number" style="color:rgb(174,129,255)">1L;
    class="hljs-keyword" style="color:rgb(249,38,114)">private String message;
    class="hljs-function" style="color:rgb(249,38,114)">class="hljs-keyword" style="color:rgb(102,217,239)">public class="hljs-title" style="color:rgb(166,226,46)">EventTestclass="hljs-params" style="color:rgb(248,248,242)">(Object source, String message) {
        class="hljs-keyword" style="color:rgb(249,38,114)">super(source);
        class="hljs-keyword" style="color:rgb(249,38,114)">this.message = message;
    }
    class="hljs-function" style="color:rgb(249,38,114)">class="hljs-keyword" style="color:rgb(102,217,239)">public String class="hljs-title" style="color:rgb(166,226,46)">getMessageclass="hljs-params" style="color:rgb(248,248,242)">() {
        class="hljs-keyword" style="color:rgb(249,38,114)">return message;
    }
    class="hljs-function" style="color:rgb(249,38,114)">class="hljs-keyword" style="color:rgb(102,217,239)">public class="hljs-keyword" style="color:rgb(102,217,239)">void class="hljs-title" style="color:rgb(166,226,46)">setMessageclass="hljs-params" style="color:rgb(248,248,242)">(String message) {
        class="hljs-keyword" style="color:rgb(249,38,114)">this.message = message;
    }
}

然后再创建一个监听类,相当于行人(不管是否使用交通工具),需要实现ApplicationListener接口,并且重写onApplicationEvent方法,可以理解成这个行人需要看信号灯,并且能理解信号灯的意思才行。否则

 展开全文


http://www.niftyadmin.cn/n/1452037.html

相关文章

怎样使得htm文件如同asp文件一样可以执行脚本代码?(转)

问: 怎样才能使得htm文件如同asp文件一样可以执行脚本代码? 答: Internet Sevices Manager -> 选择default web site ->右鼠键->菜单属性-〉主目录-> 应用程序设置(Application Setting)-> 点击按钮 &…

js除法取整数

Math.floor(27/10); //返回值为小于等于其数值参数的最大整数值。 2 Math.ceil(27/10); //返回值为大于等于其数字参数的最小整数。 3转载于:https://www.cnblogs.com/alaricblog/p/3278226.html

SEO技巧中你可能没有注意的细节(转)

SEO技术运用过程中,细节问题是非常重要的,也许你不会去在意它,就怕积小成多,小毛病和小问题是应该杜绝的,这里参考SEO诊断过程中一些细节来做一些分析讨论。 大的问题我们都不讨论,只论小问题。 1、首页、文…

代码干货 | Elasticsearch模块——CRUD

本文来源于阿里云-云栖社区,原文点击这里。 ElastICsearch的基本操作:增删改查,有必要了解,以备不时之需. 增删改查是数据库的基础操作方法。ES 虽然不是数据库,但是很多场合下,都被人们当做一个文档型 NoSQL 数据库在使用,原因自…

使用WebDriver遇到的一些问题汇总

2019独角兽企业重金招聘Python工程师标准>>> 使用WebDriver遇到的那些坑:http://www.ltesting.net/ceshi/open/kygncsgj/selenium/2014/0716/207380.html webdriver报不可见元素异常方法总结:http://www.51testing.com/html/91/79191-829759.…

ZOJ 3204 Connect them(字典序输出)

主要就是将最小生成树的边按字典序输出。 读取数据时,把较小的端点赋给u,较大的端点号赋值给v。 这里要用两次排序,写两个比较器: 第一次是将所有边从小到大排序,边权相同时按u从小到大,u相同时按v从小到大…

技术文章 | 你需要知道知道这几个因素会不利于关键词排名优化

本文来源于阿里云-云栖社区,原文点击这里。 关键词排名优化运用的好能提高网站的排名,为网站带来更好的收益,反之则会导致网站降权或者被K。所以我们需要掌握正确的关键词优化方法去进行优化,避免那些错误的优化方法。需要注意的错…

J2ME结构与相关规范介绍(转)

J2ME的适用范围很广,而且针对J2ME的规范也在增加,很多人因为对各种规范的作用不了解造成对J2ME体系的误解。本文主要讲述一下 J2ME 的结构和构成,同时对一些容易混淆的概念进行解释。J2ME是什么?很多人把J2ME等同于手机程序开发&a…