什么是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.pswp.cn/news/372734.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372734.shtml
英文地址,請注明出處:http://en.pswp.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…