EventBus VS Spring Event】的更多相关文章

EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Guava EventBus Guava EventBus实现是观察者模式,用法很简单,先上代码. /** * Desc: 事件对象 */ @Data @NoArgsConstructor @AllArgsConstructor public class HelloEvent { private Stri…
Spring事件驱动模型,简单来说类似于Message-Queue消息队列中的Pub/Sub发布/订阅模式,也类似于Java设计模式中的观察者模式. 自定义事件 Spring的事件接口位于org.springframework.context.ApplicationEvent,源码如下: public abstract class ApplicationEvent extends EventObject { private static final long serialVersionUID =…
昨天看到了一遍关于spring event的帖子,觉得很好,就照着敲了一份代码,感觉对spring event有了进一步的认识.帖子链接:https://segmentfault.com/a/1190000011433514. spring event 封装了底层,为我们方便提供了事件的发布.消息订阅.其底层原理是观察者模式. 下面直接上代码: 定义一个bean如下,使用了lombok插件(真的挺好用): package com.abc.model; import lombok.Data; @D…
通过Spring自定义event 首先我们定义我们的event类 package com.hyenas.spring.custom.event; import org.springframework.context.ApplicationEvent; public class CustomEvent extends ApplicationEvent{ private static final long serialVersionUID = -82737763905791865L; public…
EventBus 不是通用的消息系统,也不是用来做进程间的通信的,而是在进程内,用于解耦两段直接调用的业务逻辑: 1.代码结构 event:eventbus中流转的事件(消息),包结构按照业务模块在细分(比如应用部署模块就是deployment): subscriber:消费者,和event 是一一对应的,一个event 对应一个消费者,包结构按照业务模块在细分(比如应用部署模块就是deployment): poster:生产者,这边把生产者单独出来是为了收敛入口,这样可以方便的知道有哪些地方在…
Spring内置的event有 1.ContextRefreshedEvent This event is published when the ApplicationContext is either initialized or refreshed. This can also be raised using the refresh() method on the ConfigurableApplicationContext interface. 2.ContextStartedEventT…
在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring.spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务.Filter过滤器. interceptor拦截器等等,而这一篇我要说的是spring Event自定义事件,目前的项目中似乎没怎么用,但是这一项技术貌似还蛮重要,所以也不能不掌握. 对于事件驱动模型的解释和理解,我觉得有一篇博客里说的非常好,尤其是在解释这个关系的时候,举的交通信号灯的例子非常贴切,这里就引用做一个简单的解释: 事件驱…
Spring 中的自定义事件 编写和发布自己的自定义事件有许多步骤.按照在这一章给出的说明来编写,发布和处理自定义 Spring 事件. 步骤 描述 1 创建一个名称为 SpringExample 的项目,并且在创建项目的 src 文件夹中创建一个包 com.tutorialspoint. 2 使用 Add External JARs 选项,添加所需的 Spring 库,解释见 Spring Hello World Example 章节. 3 通过扩展 ApplicationEvent,创建一个…
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现.对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构. Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式.手工实现一个Observer也不是多复杂的一件事,只是因为这个设计模式实在太常用了,Java就把它放到了JDK里面:Observable和O…
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现..太烂了.怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不了了.而且试着用MarkDown发了篇草稿,右边的侧边栏竟然被挤到屏幕下方了,还影响到了博客布局..不说了..简单修改下标题.代码直接发表. 概述及基本概念 **EventBus**是一个Androi…
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习本篇知识之前建议先回顾一下前两篇知识:Android消息传递之Handler消息机制(一),Android消息传递之组件间传递消息(二). 消息传递相关文章地址: Android消息传递之Handler消息机制 Android消息传递之组件间传递消息 Android消息传递之EventBus 3.0…
1,最早在项目中使用EventBus是在去年的时候,但自己一直没抽出时间来记录记录一下,今天就来简单的使用一下,先看一下EventBus的定义是什么 EventBus:是一个发布 / 订阅的事件总线. 再来看看它能干什么事 主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦. 我们来简单的实现一下其功能吧: EventBus的简单实用就是下面的四个方法 event…
当Android项目越来越庞大的时候,应用的各个部件之间的通信变得越来越复杂,例如:当某一条件发生时,应用中有几个部件对这个消息感兴趣,那么我们通常采用的就是观察者模式,使用观察者模式有一个弊病就是部件之间的耦合度太高,在这里将会详细介绍Android中的解耦组件EventBus的使用. EventBus简介 Publisher-Subscriber这种设计模式在GoF中早就详细的解释.也是一种最常用不过的设计模式.而EventBus则是对于Publisher和Subscriber的一种实现,如…
EventBus下载地址:https://github.com/greenrobot/EventBus MyEvent: package com.zzw.testeventbus; public class MyEvent { public int id; public String content; public MyEvent() { super(); } @Override public String toString() { return "MyEvent [id=" + id…
概述及基本概念 **EventBus**是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间 的通信.比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求 都可以通过**EventBus**实现. 作为一个消息总线,有三个主要的元素: Event:事件 Subscriber:事件订阅者,接收特定的事件 Publisher:事件发布者,用于通知Subsc…
使用spring中的Log4jConfigListener有如如下好处:    1. 动态的改变记录级别和策略,不需要重启Web应用,如<Effective Enterprise Java>所说.    2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径. 因为 系统把web目录的路径压入一个叫webapp.root的系统变量.这样写log文件路径时不用写绝对路径了. log4j.appender.logfile.File=${webapp.root}/WEB-INF/l…
以前的几篇文章简单的介绍了一下UI线程和子线程之间的线程通信利器Handler,以及顺便介绍了一下SyncTask和HeadlerThread.这里介绍另一线程通信利器EventBus. EventBus是一个开源组件.https://github.com/greenrobot/EventBus,通过线程间事件订阅和分发来完成消息传递,通过这种模式来降低组件之间的耦合度. 多说无益,直接看实例. import android.support.v7.app.AppCompatActivity; i…
今天简单的介绍 一下啊 android  EventBus 的使用 EventBus 在官方介绍中是订阅......什么的 一大堆  ,  在我android 菜鸟眼里 就是用来代替android 广播的  简单粗暴 效率高; 其实用法挺简单 的   就   三步   注册(官方叫订阅)   接收   取消(取消订阅). 算了 不多说直接上代码 ; 如果你用的是 android studio 直接在build.gradle 里添加 : compile files('libs/EventBus2.…
第一步:在build.gradle中添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'} 第二步:创建一个 Event类: 注意:enum 不是classpublic enum Event { //消息名,可以根据这个名字判断是哪个消息 IMAGE_LOADER_SUCCESS;}//------------主布局文件------------------------ <TextView android:layout_width=&qu…
spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用,关于观察者模式在之前的博文中总结过,http://www.cnblogs.com/fingerboy/p/5468994.html  这里主要讲一下Spring中的观察者模式的应用. spring事件驱动模型的结构. 首先明确几个spring提供的类的概念 1.ApplicationEvent public abstract class ApplicationEvent extends EventObject { pr…
首先介绍Spring事件相关类的关系: 其中EventListener与EventObject均是Java SE的范畴,源码如下: package java.util; public interface EventListener { } package java.util; public class EventObject implements java.io.Serializable { private static final long serialVersionUID = 5516075…
前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下这篇文章. 本文档为 CAP 文献(Wiki),本文献同时提供中文和英文版本,英文版本目前还在翻译中,会放到Github Wiki 中. 目录 前言 1.Getting Started 1.1 介绍 1.2 应用场景 1.3 Quick Start 2.API接口 2.1 发布/发送 2.1.1 事务 2.2 订阅/消费 2.2.1 例外情况 3.配置…
EventBus 是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent, Handler, BroadCast 在 Fragment,Activity,Service,线程之间传递消息.优点是开销小,使用方便,可以很大程度上降低它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量. 类似的库还有 Otto ,今天就带大家一起研读 EventBus 的源码. 在写这篇文章之前,我已经将本文相关的中文注释代码上传到了GitHub:https://github…
前言 以前每个页面与每个页面业务逻辑传递让你不知所措,一个又一个接口回调,让你晕头转向,一个又一个参数让你混乱不堪.EventBus一个耦合度低的让你害怕的框架. 什么是EventBus EventBus是一个消息总线,以观察者模式实现,用于简化程序的组件,可以轻易切换线程,实现各组件之间的刷新通知,以及参数的传递.EventBus3.0跟之前版本的区别 是介入了annotation @Subscribe,取代了以前约定命名的方式. EventBus的优点 它代替了广播,startActivit…
1.测试程序EventTest.java,发布一个事件只需要调用FrameEventHolder.publishEvent()方法即可. package com.junge.spring.event; import com.junge.spring.vo.Mail; public class EventTest { /** * @param args */ public static void main(String[] args) { FrameEvent frameEvent = new F…
概述及基本概念 **EventBus**是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信.比方请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间须要通过Listener通信,这些需求都能够通过**EventBus**实现. 作为一个消息总线.有三个基本的元素: Event:事件 Subscriber:事件订阅者.接收特定的事件 Publisher:事件公布者,用于通知Subscri…
示例使用 时序图 源码解读 EventBus 使用 官网定义:EventBus 是一个使用 Java 写的观察者模式,解耦的 Android 开源库.EventBus 只需要几行代码即可解耦简化代码,加快开发速度. 使用: 定义 event . Event 就是个标准 POJO 类 public class MessageEvent { public final String message; public MessageEvent(String message) { this.message…
EventBus是github上的一个第三方开发库,其在github上的项目主页地址:https://github.com/greenrobot/EventBus EventBus的消息模型是消息发布者/订阅者机制. (1)EventBus是消息发布者(发送消息)/订阅者(接收消息)模式.EventBus的消息发布十分灵活,可以在工程代码中的任意位置发送消息,EventBus 发布消息只需要一行代码即可实现: EventBus.getDefault().post(event); Event即为自…
<spring扩展点之三:Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法,在spring启动后做些事情> <服务网关zuul之七:zuul中的动态刷新路由配置> <ApplicationEvent事件机制源码分析> <JDK自带的观察者模式> 背景 在开发工作中,用到spring cloud的zuul,zuul中的动态刷新zuul的路由信息中用到了事件监听,事件监听也是设计模式中 发布-订阅模式.…
什么是ApplicationContext? 它是spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,需要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面只有一个构造函数和一个长整型的timestamp. ApplicationListener 是一个接口,里面只有一个onApplicationEvent方法. 所以自己的类在实现…