什么是Spring Integration?

随着Spring Integration项目逐渐获得越来越多的采用和兴趣,企业集成或企业开发领域的开发人员很可能会遇到它。 他们可能会发现它很有趣,但并没有完全理解它的含义,所要解决的问题,可以从中获取更多信息以及它在ESB和其他SOA基础结构的开源生​​态系统中的适合位置。 这是我对普通人的描述的尝试。

首先,这是什么?
这是一个由SpringSource委托的开源项目,旨在利用Spring框架的当前功能来关注应用程序集成空间中发现的问题。 没有一个具体的例子,或者没有更基本的理解,最后一句话可能与您所看到的有关Spring Integration或一般集成的其他信息一样模糊。 因此,让我进一步详细介绍一下,以使该声明变得不太模糊。

那么,为什么Spring的人们决定创建一个专门针对集成的项目呢? Spring框架本身是否已经提供了很多呢? 对于处理JMS,JDBC,事务管理,对象XML映射,http / rmi调用等,Spring确实具有出色的抽象。 它还提供了一个基于依赖注入的框架,该框架可促进代码更清晰,解耦且更易于测试。 但是,如果您退后一步,意识到Spring提供的功能,实际上只是通用的构建基块,组件模型,可以在无数种解决方案中使用。 因此,当涉及到系统/应用程序集成时,您可以使用这些构建模块来实现自己的功能非常强大的解决方案。 但是,应用程序集成以及解决这些问题所固有的问题并不新鲜。 有相当多的“模式”是出现一旦你经历过尝试了一把,在整合两个系统进行数据交换,过程调用,事件通知等,这些模式是很好的格雷戈尔Hohpe和Bobby伍尔夫在其拍摄的永恒本书“企业集成模式” 。 就像我肯定在以前的博客文章中提到的那样,我强烈建议本书为企业开发领域的任何人使用。 这些模式是众所周知的,可以解决大多数集成问题。

Spring的人们决定采用他们的Spring Framework的构建块以及Hohpe的书中介绍的模式,以创建一个更加专注的框架,专门处理集成应用程序。

那么集成领域存在什么问题呢? 就像我说的那样,对它们的描述远比我在EIP中所能描述的要好得多,但这是对几乎总是存在的问题的简单描述。 两个应用程序需要共享一条数据,例如,源自系统A的客户报告需要在另一个系统B中可用。系统A只能通过直接TCP连接与外部应用程序进行通信,而系统B具有简单的用于将报告信息加载到其中的Web服务,并且不愿意更改为其他任何内容。 您如何去做呢? 您可以编写一些定期运行的自定义集成“胶水代码”:设置批处理或cron作业,中断Java的套接字或socket-nio库,连接至系统A,读写输入流,抓取有用的数据,将其转换为某种中间格式,将某些数据映射到SOAP xml消息,以便系统B可以理解它,分解AXIS或HttpCommons并将xml发送到系统B。涉及许多编码在创建此集成时,可以将其归类为基础架构,而不是真正的“定制”。 例如,连接到TCP并读取/写入流。 为什么我们必须编写该代码? 没有任何风俗习惯。 将其委托给框架/库。 轮询以查看应用程序是否可用? 也请委托,这不是自定义问题。 和网络服务呼叫? TCP通信,轮询或事件处理,Web Service调用,路由和转换以及许多其他功能的通用组件。 正是Spring Integration提供的。 并且它试图模仿EIP书中描述的模式的全部功能,同时使用以前的Spring Framework用户熟悉的组件模型。

在“什么是Spring Integration”的讨论中,我发现很多问题是它与ESB或SOA架构之间的关系,如果要对Spring Integration与竞争进行分析,那么竞争到底是什么? ? 首先,Spring Integration不是ESB。 这是一个“路由”和“中介”框架。 当我说这是一个调解框架时,我的意思是说它允许通过“调解”消息而使具有不同消息和协议的两个不同系统相互通信:解决/协商两者之间的差异,以便它们可以交换数据。 该中介和路由框架可以在任何地方使用,不需要部署到重量级的ESB容器或任何ESB容器中。 它可以部署在应用程序内(独立的应用程序或应用程序服务器中的Java EE解决方案的一部分),ESB内(如果需要),消息代理的一部分等。在部署方面具有灵活性。 Spring Integration本身不应与ServiceMix , MuleESB , TIBCO , IBM或Oracle的ESB解决方案或其他ESB进行比较 。 我想到的一个可以比较的开源项目是Apache的Camel项目,它也是一个中介和路由引擎。 Apache Camel还是解决集成问题空间的非常强大且功能强大的解决方案,它还实现了EIP书中的模式。 如果读者表现出兴趣,我可以在以后的博客文章中进行比较。

有关Spring Integration的更多信息,我建议访问他们的项目页面 ,阅读最近出版的Pro Spring Integration一书,当然还要阅读并完全理解EIP书 。

参考: 什么是Spring Integration? 来自我们的JCG合作伙伴 Christian Posta,网址为Christian Posta Software博客。


翻译自: https://www.javacodegeeks.com/2012/04/what-is-spring-integration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jmap mat_java内存调优之jmap,jstack,mat

查看整个JVM内存状态jmap -heap [pid]要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起查看JVM堆中对象详细占用情况jmap -histo [pid]可以通过jmap -histo [pid] | head -20查看top20的实例个数以及内存占用情况导出整个JVM 中内存信息&a…

lftp

-f:指定lftp指令要执行的脚本文件; -c:执行指定的命令后退出; --help:显示帮助信息; --version:显示指令的版本号。下载 get当然是可以的,还可以: mget -c *.pdf #把所有…

Apache Shiro第1部分–基础

Apache Shiro (最初称为JSecurity)是Java安全框架。 它被接受并于2010年成为Apache顶级项目。它的目标是功能强大且易于使用。 该项目正在积极开发中,用户和开发人员的邮件列表均处于活动状态。 最重要的区域记录在其网页上。 但是&#xff0…

javascript 之Object内置对象

Object.defineProperty(obj, prop, descriptor)转载于:https://www.cnblogs.com/lihuali/p/5632460.html

java员工编号程序_用JAVA编写一个employee类 为员工自动产生员工号

差不多就是这个感觉..class Employee {/*** param args*/private int number;private String name;private String birthday;static int IDnumber0;public Employee(String name,String birthday){IDnumber;this.setNumber(IDnumber);this.setName(name);this.setBirthday(birt…

分解质因数-洛谷P3200 [HNOI2009]有趣的数列

https://www.luogu.org/problem/show?pid3200 首先,我们不能保证要求的数的逆元和模域互质; 所以我们要用分解质因数来抵消除法; 其实逆元的话即使可行也会超时; 那么我转载了,实在没什么可以说的; 另…

Java中的安全加密

上一次我写关于密码学的文章时 ,我概述了Apache Shiro加密API,并展示了如何使用其两个对称密码。 我还写道:“您不需要在应用程序中对敏感数据进行加密和解密。” 我了解了更多有关密码的知识,发现您需要了解更多信息。 我写的内容…

真机调试问题

1.拔掉插头重新插入 2.转载于:https://www.cnblogs.com/sanvow/p/5633976.html

vsftp

它的配置文件在/etc/vsftpd/vsftpd.conf在里面加入 anonymous_enableYES #允许匿名用户登录FTPanon_upload_enableYES #打开匿名用户的上传权限anon_mkdir_write_enableYES #打开匿名用户创建目录的权限anon_other_write_enableYES …

java scrollpane源码_JScrollPane用法 Java实例

时间:2019-10-07概述:JScrollPane 滚动条在Java中使用JScrollPane的例子,特别是滚动条的设置等,程序代码中将设置水平与垂直表头、设置scrollPane的边角图案、设置scrollPane的边框凹陷立体边框。适时水平滚动轴的参数设置等内容&…

ANTLR教程– Hello Word

Antlr代表另一种语言识别工具。 该工具能够为任何计算机语言生成编译器或解释器。 除了明显的用途(例如需要解析一种真正的“大型”编程语言,例如Java,PHP或SQL)外,它还可以帮助执行更小,更常见的任务。 每…

centOS 6.5安装python和nginx

一、安装python3.5 1、安装python3.5 2、安装pip并升级到最新 下载wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz 注意:wget获取https的时候要加上:--no-check-certificate tar zvxf 1.5.5.tar.gz #解压文件 cd pip…

rabbitmq 学习-9- RpcClient发送消息和同步接收消息原理

rabbitmq 学习-9- RpcClient发送消息和同步接收消息原理 转载于:https://www.cnblogs.com/gotodsp/p/6532824.html

汇编写java模块_java – maven汇编插件moduleset源指令不包括任何文件,不符合附带的模块...

我有一个多模块的maven项目,我正在尝试获取组件插件的moduleset源部分.我有模块“module_parent”,“module_a”和“module_assembly”.module_a和module_assembly是module_parent的子项.module_assembly对module_a有一个声明的pom依赖关系.module_assmebly具有程序集插件,asse…

用于RIA的JavaFX 2与HTML5

这些天来,我们正在启动一个新项目,以实现Rich Internet Application(RIA) 。 第一个问题是:我们应该使用哪些技术和框架? 后端将是Java或其他现代JVM语言,因为我们主要是经验丰富的Java开发人员…

插件化编程实现的一份糖炒栗子~~

迷茫的原因是因为想得太多,做得太少。因为只是 想 真的很容易,转瞬之间就会产生无数个念头,或许是该做点什么了吧。 但是整个人都是懒的,是废的,是大脑控制不住自己的行为的。解决方案唯有一步一步的去把行为变成习惯。…

用C#来学习唐诗三百首和全唐诗

Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了【唐诗三百首】和【全唐诗】这两个txt文件,正好用C#来整理一下。 然后导出QData格式,可以给其他软件读取。 以后弄个开机自动显示一句诗&#xf…

JRockit JRCMD教程

本文将为您提供概述和教程,说明如何使用jrcmd工具对JRockit Java Heap问题进行初始分析和问题隔离。 将来的文章中将介绍使用JRockit任务控制和堆转储分析(仅限JRockit R28 版)的更深入的分析和教程。 有关JRockit Java堆空间的快速概述&…

sts java配置tomcat_STS配置Tomcat.9.0

今天,心血来潮,弄了一下STS,按着建立WEB项目的方式建立工程。一、新建工程(FILE --NEW--Dynamic Web project)二、输入项目名称,TestWeb,然后下一步,点击FInish.三、新建index.jsp并打开index.jsp,书写测试成功&#x…

javaweb国际化

根据数据的类型不同,国际化分为2类:静态数据国际化和动态数据的国际化。 静态数据,包括 “标题”、“用户名”、“密码”这样的文字数据。 动态数据,包括日期、货币等可以动态生成的数据。 国际化涉及到java.util.Locale和java.ut…