spring之ApplicationEvent 事件驱动】的更多相关文章

什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,需要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面只有一个构造函数和一个长整型的timestamp. ApplicationListener 是一个接口,里面只有一个onApplicationEvent方法. 所以自己的类在实现…
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…
事件驱动模型是观察者模式的另一种形态,观察者相当于监听器,被观察者相当于事件源 事件源产生事件,监听器监听事件 以用户注册时候,要发送邮件和发送短信举例说明 定义一个事件 /** * spring会自动将该事件注册到applicationContext中 * 这里有通过构造方法将事件源传递进去,有些场景可以用到,本例子中的事件源是UserService */ public class UserRegisterEvent extends ApplicationEvent { /** * */ pr…
前言 关于事件驱动模型,百度百科在有明确的解释.在JDK的Util包里抽象了事件驱动,有兴趣的朋友可以自行去看下相关类的定义.Spring事件模型ApplicationEvent是基于JDK里的事件模型,废话不多说,直接看Spring是如何定义事件模型,以及在具体业务场景中的应用. 事件 事件就是事件,鼠标点击一下算一个事件,某个按钮被点击了一下算一个点击事件,那么我订单支付了可以认为支付也算一个件事!触发了某个事件...... 等等. 抽象类ApplicationEvent承载着我们要传播的事…
原理:ApplicationContextAware接口提供了publishEvent方法,实现了Observe(观察者)设计模式的传播机制,实现了对bean的传播.通过ApplicationContextAware我们可以把系统中所有ApplicationEvent传播给系统中所有的ApplicationListener. 直接上代码: 1.定义自己的监听事件 2.定义自己的监听器(负责处理自己的监听事件) 3.定义一个bean触发监听事件 4.测试 package com.test.even…
事件 @SuppressWarnings("serial") public class CheckEvent extends ApplicationEvent { public CheckEvent(Object source) { super(source); } } 事件处理监听器 @Component public class CheckListener implements ApplicationListener<CheckEvent> { @Override pu…
什么是ApplicationContext? 它是Spring的核心,Context我们通常解释为上下文环境,可是理解成容器会更好些. ApplicationContext则是应用的容器. Spring把Bean(object)放在容器中,须要用就通过get方法取出来. ApplicationEvent 是个抽象类,里面仅仅有一个构造函数和一个长整型的timestamp. ApplicationListener 是一个接口,里面仅仅有一个onApplicationEvent方法. 所以自己的类在…
在Spring中已经定义了五个标准事件,分别介绍如下: 1)ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件. 2)ContextClosedEvent:当ApplicationContext被关闭时触发该事件.容器被关闭时,其管理的所有单例Bean都被销毁3) RequestHandleEvent:在Web应用中,当一个http请求(request)结束触发该事件4)ContestStartedEvent:Spring2.5新增的事件…
转载自:http://jinnianshilongnian.iteye.com/blog/1902886#comments 事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者(订阅者)就可以接收到改变: 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉:所以就松散耦合了它们之间的关系. 接…
spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用,关于观察者模式在之前的博文中总结过,http://www.cnblogs.com/fingerboy/p/5468994.html  这里主要讲一下Spring中的观察者模式的应用. spring事件驱动模型的结构. 首先明确几个spring提供的类的概念 1.ApplicationEvent public abstract class ApplicationEvent extends EventObject { pr…
一.事件起源 相信很多人在使用spring框架进行开发时,都会遇到这样的需求:在spring启动后,立即加载部分资源(例如:spring启动后立刻加载资源初始化到redis中).当我去解决这个问题时发现,springboot启动过程中会有事件驱动模型的具体实现,共有两种实现: 1)第一种实现,具体代码如下: import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframewo…
事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者(订阅者)就可以接收到改变: 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的),目标无需干涉:所以就松散耦合了它们之间的关系. 接下来先看一个用户注册的例子: 用户注册成功后,需要做这么多事: 1.加积分 2.发确认邮件 3.如果是游戏帐户,可能赠送游戏…
正如上面章节所介绍的那样, org.springframework.beans.factory 包提供了管理和操作beans的 基本功能. org.springframework.context包增加了继承了BeanFactory接口的ApplicationContext 接口,它额外了提供了一种更加面向引用框架风格的功能支持.很多人以一种完全声明的风格来使用 ApplicationContext,甚至于不通过程序的方式来创建它而是依赖例如ContextLoader的支持类来作 实例一个Appl…
一.前言 说来惭愧,对应Spring事件机制之前只知道实现 ApplicationListener 接口,就可以基于Spring自带的事件做一些事情(如ContextRefreshedEvent),但是最近看公司的wiki基于Spring事件的领域驱动才发现原来还有这么多东西. 二.订阅/发布(观察者模式) 2.1简介 Spring是基于事件驱动模型的,我们常用的MQ就是基于观察者模式设计的. 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多…
最近公司在重构广告系统,其中核心的打包功能由广告系统调用,即对apk打包的调用和打包完成之后的回调,需要提供相应的接口给广告系统.因此,为了将apk打包的核心流程和对接广告系统的业务解耦,利用了spring的事件监听特性来满足需求.以下说明spring的事件机制的相关内容.   1.观察者模式    Spring的事件监听(也称事件驱动)是观察者模式的一种实现,比较常见的有发布-订阅模型.通常我们利用消息队列来实现不同系统之间的解耦,如用户注册完成后,可以向消息队列发布一条消息,然后订阅了此to…
spring是目前使用最为广泛的Java框架之一.虽然spring最为核心是IOC和AOP,其中代码实现中很多设计模式得以应用,代码看起来简洁流畅,在日常的软件设计中很值得借鉴.以下是对一些设计模式的理解以及源码解析,希望能给大家对设计模式的理解有所帮助. 观察者模式:发布/订阅 更多设计模式更新中..... (基于spring-4.3.23.RELEASE分析) 1.观察者模式: 发布/订阅 如对观察者模式还不是很有概念,可以点击这里.spring中ApplicationEvent事件通知就是…
基于Spring的发布订阅模式 在我们使用spring开发应用时,经常会碰到要去解耦合一些依赖调用,比如我们在做代码的发布流程中,需要去通知相关的测试,开发人员关注发布中的错误信息.而且通知这个操作又不希望强耦合在主业务流程中,这个时候我们很容易就想到了观察者设计模式,而spring恰好提供了事件-监听机制,让我们看一下他们是具体怎么实现的吧. 事件-监听机制: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者…
6. IoC容器 6.1 Spring IoC容器和bean介绍 这一章节介绍了Spring框架的控制反转(IoC)实现的原理.IoC也被称作依赖注入(DI).It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, arguments to a factory method, o…
Spring Boot 启动(一) SpringApplication 分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class); } } 本…
Session和Cookie这两个概念,在学习java web开发之初,大多数人就已经接触过了.最近在研究跨域单点登录的实现时,发现对于Session和Cookie的了解,并不是很深入,所以打算写两篇文章记录一下自己的理解.在我们的应用集成Spring Session之前,先补充一点Session和Cookie的关键知识. Session与Cookie基础 由于http协议是无状态的协议,为了能够记住请求的状态,于是引入了Session和Cookie的机制.我们应该有一个很明确的概念,那就是Se…
1.注入 2“util类 package com.liveyc.mgrsite.util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springfram…
目录 前言 1.起源 2.SpringApplication 运行阶段 2.1 SpringApplicationRunListeners 结构 2.1.1 SpringApplicationRunListener 事件和监听机制 2.1.2 SimpleApplicationEventMulticaster 广播器 2.2 ApplicationArguments 加载启动参数 2.3 ConfigurableEnvironment 加载外部化配置 2.4 ConfigurableApplic…
简介 本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解. 1. 思维导图 右键新窗口打开可以放大. 说明 使用@Configuration在java代码中声明一个bean--而不是使用xml--实际上很早就有了(至少在<Spring实战(第3版)>出版时,也就是Spring3.0时),我一直以为是SpringBoot的新特性. 2. Spring 2.1 AOP术语 通知Advice -- 切面要做什么,何时执行.何时,包括方法…
spring中的事件驱动模型Event(也叫发布订阅模式),是观察者模式的一个典型的应用 好处:业务解耦,在不影响原来业务逻辑的情况下,加入其它业务 场景: app上线后已实现用户注册功能,现需要在用户注册成功后给用户发送短信提示. 因为怕发送短信的代码逻辑发送异常会影响以前的用户注册功能,所以将发送短信功能设置成监听事件,在用户注册成功后发布一个事件,在事件监听器中监听到该事件后处理发送短信逻辑.如果发送短信发生异常,不会影响用户注册功能. 代码实现: 新建maven项目,引入依赖: <!--…
石墨文档:https://shimo.im/docs/tHwJJcvKl2AIiCZD/ (二期)18.开源t-io项目解读 [课程18]BIO....AIO.xmind0.4MB [课程18]t-io简介.xmind0.2MB [课程18]两个官方例子.xmind0.3MB [课程18]同步异...阻塞.xmind0.3MB [课程18预习]百万...t-io.xmind0.3MB t-io是什么 官网相关 官网:https://t-io.org/ 宣传:不仅仅是百万级网络通信框架,让天下没有…
Spring4参考手册中文版 前言 https://github.com/b2gats/stone-docs/blob/master/spring-4-beans.md Part III. 核心技术 本部分参考手册完全覆盖了Srping 框架的全部技术 首先是Spring IoC控制反转.深入彻底的IoC讲解之后,紧随其后的是全面解说Spring AOP.Spring有自己的AOP框架,该框架概念简单易于理解,能解决Java企业应用中80%的需求 Spring也集成了AspectJ,Aspect…
我主要在研究.NET/C# 实现 PC IMERP 和 Android IMERP ,目的在解决企业通信中遇到的各类自动化问题   分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的KV数据库. 它的出现很大程度补偿了Memcached在某些方面的不足. EnyimMemcached:访问Memcached最优秀的.NET客户端,集成不错的分布式均衡…
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http://…
Source:http://segmentfault.com/q/1010000002404545 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台…
以下仅仅是自己一些粗浅认识.欢迎补充指正.欢迎进群交流! 掌握一半便能够熟练的开发爬虫玩了.自己正在努力中... 一.技能列表 1.掌握java.尤其编程网络部分:李刚的java基础至少看了三遍以上: 2.熟悉html.js. ajax.firedebug3.网页去重.找到网站特点4.分布式5.多线程6.一种关系型数据库mysql/oraclelserver/mybatis7.正则表达式.css selector. xpath8.DNS cache9.TCP/IP/Http协议tp2.010.w…