Spring消息机制

消息机制是使用消息通知的方式,解耦生产者与消费者。编程上体现的是职责分割,使得消息处理的扩展性得到增强,符合设计原则中的单一职责以及开闭原则。

Spring的ApplicationListener接口

ApplicationListener是Spring应用监听器基础接口,是消费者需要实现,用来消费特定事件的,接口如下:

public interface ApplicationListener<E extends ApplicationEvent> 
extends EventListener {
    /**
    * Handle an application event.
    * @param event the event to respond to
    */
    void onApplicationEvent(E event);
  }

如何使用

利用Spring消息机制进行业务处理,逻辑非常简单,只需要以下几个步骤:

  1. 定义事件消息,即需要发布的消息对象,例如:
public class ApplicationEventSimple extends ApplicationEvent
  1. 定义处理器,并声明能够处理的消息类型,即实现ApplicationListener接口,实现类被Spring托管后,会自动被识别,并加入到消息监听器集合中,使用实例:
@Component
public class DefaultListener 
implements ApplicationListener<ApplicationEventSimple> 
  1. 发布消息,通过ApplicationContext.publishEvent(ApplicationEvent event)发布消息,Spring会自动找到对应的处理器进行处理。

Spring内置事件

Spring在容器启动阶段或者销毁阶段,提供了相关的事件通知,通过传递整个ApplicationContext,以便使用者在容器启停阶段能够植入自己的逻辑。

消息类的基类为:ApplicationContextEvent,具体实现有ContextStartedEvent(容器开始启动事件)ContextClosedEvent(容器关闭时事件)ContextRefreshedEvent(IOC容器启动完成事件)ContextStoppedEvent(容器停止事件)

如果想要监听这些事件,只需要实现监听程序即可,我司RPC自动注册就是通过ContextRefreshedEvent消息的监听,然后处理的。

最后,Spring消息消费可以控制异步或者同步执行,而正确的使用消息机制对于代码的逻辑控制将会非常的灵活。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,301评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,014评论 6 342
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,105评论 2 11
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,664评论 1 92
  • 昨天和几个玩的比较好的同学一起去吃饭,回来的路上聊到了大学生活,毫无疑问的,大家都基本是混日子得过且过来的。是啊,...
    伊柒柒阅读 1,131评论 0 1