EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Guava EventBus Guava EventBus实现是观察者模式,用法很简单,先上代码. /** * Desc: 事件对象 */ @Data @NoArgsConstructor @AllArgsConstructor public class HelloEvent { private Stri…
昨天看到了一遍关于spring event的帖子,觉得很好,就照着敲了一份代码,感觉对spring event有了进一步的认识.帖子链接:https://segmentfault.com/a/1190000011433514. spring event 封装了底层,为我们方便提供了事件的发布.消息订阅.其底层原理是观察者模式. 下面直接上代码: 定义一个bean如下,使用了lombok插件(真的挺好用): package com.abc.model; import lombok.Data; @D…
背景:     接着上篇文章来,上篇文章讲的是如何利用ApplicationContext的事件机制来达到业务解耦,而且这只能作用在单体应用中.在当下这么盛行的微服务架构中,想要再利用此方案做业务解耦是不可能的了,我们也提到,现在比较流行的解决方案是利用消息队列来完成,例如现在流行的RabbitMQ.RocketMQ.ActiveMQ,Kafka.     当然了,我们还可以利用Redis的队列来完成,也是完全没问题的.刚好我自己的阿里云装好了一个redis,我们就直接用Redis来解决吧.Re…
Spring事件驱动模型,简单来说类似于Message-Queue消息队列中的Pub/Sub发布/订阅模式,也类似于Java设计模式中的观察者模式. 自定义事件 Spring的事件接口位于org.springframework.context.ApplicationEvent,源码如下: public abstract class ApplicationEvent extends EventObject { private static final long serialVersionUID =…
最近遇到的一个项目中用到了标题所说的方法,用Spring.Net将业务类封闭成WebService供其它地方调用使用,感觉还是蛮新鲜的,于是在园子中搜了一篇园友写的文章(这里)自己也尝试着搭了一个环境,最后是顺利跑了起来,但是中间遇到了几个问题,这里记录一下. 具体的搭建方法不再赘述,上面的文章写的比较清楚了,主要问题: 1.配置文件引入方式 在配置文件web.config中引用spring.net的配置文件时,我并没有像上面文章中一样建了一个新的配置文件而是建了一个叫settings.xml的…
Spring IOC用于解决对象依赖之间的解耦,而Spring AOP则用于解决业务依赖之间的解耦: 统一在一个地方定义[通用功能],通过声明的方式定义这些通用的功能以何种[方式][织入]到某些[特定应用]里去,并且[不需要修改]特定应用的代码:-1通用功能:<aop:aspect>如日志.安全或事务,具体的方法动作称为Advice:-2方式:<aop:before|after-returning|around>如方法调用.字段修改和抛出异常,Spring AOP仅支持方法调用(m…
简单的说,观察者模式,就类似于 广播站发送广播,和收音机的关系.多个收音机去收听同一个广播频道. 在实际的业务场景中,可以是这样的.创建订单成功后,发布事件.然后减库存.发送短信.调用微信.调用物流服务.等多个后续业务,都去监听同一个事件. 定义一个事件. package com.study.design.observer.spring; import org.springframework.context.ApplicationEvent; /** * 定义事件 */ public class…
通过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…
1.定时分析 在业务需求中有的需要检测用户的状态,通过对用户状态的检测做出对此状态相应的操作,如果这种检测由运营人工检测,不仅工作量大,而且准确性不高,人工无法很好的完成工作: 问题根源:在检测用户状态时,运营人工无法很好的完成检测操作,且费时费力,准确性不高: 解决办法:通过java框架的Spring,配置定时器 cronTriggerBean ,可以定时去执行指定的方法,利用此方法定时扫描数据库中的用户状态值,取出状态值改变的用户数据,对其执行相应的操作: 2.导入包 spring.jar,…
前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的.因此专门写此篇帖子分析why. 1.预备知识 aop概念请参考[http://www.iteye.com/topic/1122401]和[http://jinnianshilongnian.iteye.com/blog/1418596] spring的事务管理,请参考[http://jinnianshilongnian.iteye.com/blog/1…