文章目录
背景
《Spring全家桶的深入学习(一):Spring起步》
《Spring全家桶的深入学习(二):基于SpringMVC开发web应用》
《Spring全家桶的深入学习(三):实现数据持久化》
《Spring全家桶的深入学习(四):使用Spring Data实现数据持久化》
《Spring全家桶的深入学习(五):使用Spring Security安全框架保护web应用》
《Spring全家桶的深入学习(六):Spring的配置属性》
《Spring全家桶的深入学习(七):Spring集成REST API服务》
《Spring全家桶的深入学习(八):Spring集成JavaMailSender实现邮件发送》
《Spring全家桶的深入学习(九):Spring集成RabbitMQ实现异步消息处理》
- 在前九篇文章中我们已经实现了一个简单的用户邮箱登记的web应用,将数据保存到mysql数据库中,并利用安全框架对web页面进行保护及实现了管理员的注册登录,又通过Spring的配置属性完成了自定义的各种配置。
- 接下来我们开始了解Spring与应用的集成的基本概念,集成了REST API服务,通过JavaMailSender实现了邮件发送,及通过RabbitMQ实现异步消息的处理。
- 本章我们将会了解Spring Integration框架,通过实战演练掌握Spring集成模式带来的高效率应用。
Spring Integration
- 在企业级开发中,某个应用程序或模块往往需要完成读取消息、通过路由与外部API交互、生成日志文件、消息异步处理等一系列任务;我们会把这一系列任务组成一个或多个管道流,并定义为ESB(Enterprise Service Bus )企业服务总线(总线方式把点对点、多对多的连接方式变成一对一的方式):
Spring Integration 正是企业级服务总线的实现:Spring Integration实现通用的集成模式,每个模式都实现为一个组件,消息会通过该组件在管道中传递数据。借助Spring配置,我们可以将这些组件组装成一个管道,数据可以通过这个管道来流动。
Spring Integration在系统内提供实现轻量级、事件驱动交互行为的框架
Spring Integration在系统间提供一种基于适配器的平台,以支持灵活的系统间交互
Spring Integration的几个重要概念
- 消息(Message):在Spring Integration中,消息是任何Java对象的通用包装。
- 网关(gateway):通过接口将数据传递到集成流中,即总线入口。
- 通道(channel):将消息从一个元素传递到另一个元素。
- 过滤器(filter):基于某些判断,条件化地允许某些消息通过流。
- 转换器(transformer):改变消息的值和/或将消息载荷从一种类型转换成另一种类型。
以上重要概念具体可参考 《Enterprise Integration Patterns》(企业集成模式)
Spring Integration集成模式实战
- 在上一篇 《Spring全家桶的深入学习(九):Spring集成RabbitMQ实现异步消息处理》文章中,UseService与RabbitMQ发送消息服务直接点对点对接,如果我们对这个通知过程再加入根据邮箱地址信息过滤发送,记录日志信息等模块 ,则用户服务类需要同步扩充。
- 显然,我们希望把《通知用户处理模块》这个流程进行集成,UseService只与这个流程的入口进行单点连接,屏蔽在这个流程中的复杂处理单元,更有利于流程的扩展。
- 用户通知集成服务