日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

引入Spring集成

發(fā)布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 引入Spring集成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在本文中,我們介紹Spring Integration 。 如果您以前沒有使用過Spring Integration,那么可能會幫助您復(fù)習(xí)Gregor Hohpe的Enterprise Integration Patterns 。 我還將推薦Josh Long 撰寫的這篇出色的介紹性文章 。

上下文設(shè)置

簡而言之, 企業(yè)集成模式就是如何使兩個應(yīng)用程序(可能位于不同的技術(shù)堆棧,不同的機器,不同的網(wǎng)絡(luò)上)相互通信,以提供單個業(yè)務(wù)功能。 面臨的挑戰(zhàn)是如何確保這種通信對業(yè)務(wù)用戶保持透明,同時又對應(yīng)用程序可靠且容易。 消息傳遞是模式之一。 使用此模式,應(yīng)用程序可以使用可自定義的格式頻繁,立即,可靠和異步地相互通信。 應(yīng)用程序通過在虛擬管道(稱為Channels )上發(fā)送數(shù)據(jù)(稱為Messages )來相互交談。 這是對該概念的過于簡單的介紹,但希望足以理解本文的其余部分。

Spring Integration不是任何模式的實現(xiàn),但是它支持這些模式,主要是消息傳遞。

本文的其余部分將動手實踐,并且是Spring 3系列的擴展。本系列的早期文章包括:

  • Hello World with Spring 3 MVC
  • 使用Spring 3 MVC處理表單
  • 使用Spring 3進行單元測試和記錄
  • 使用Spring 3 MVC處理表單驗證
  • 事不宜遲,讓我們開始吧。

    裸露骨骼的Spring集成示例

    在撰寫本文時,Spring的最新版本是3.1.2.RELEASE。 但是,最新版本的Spring Integration是2.1.3.RELEASE,可在Maven Central中找到。 我有些不滿意-回想起來不合邏輯-對Spring和Spring Integration應(yīng)該具有不同的最新版本感到吃驚,但是,嘿,就是這樣。 這意味著我們的pom.xml現(xiàn)在應(yīng)該添加一個(如果您想知道那是從何而來的,至少在很高的層次上,我需要在本文前面提到的Spring 3系列繼續(xù)學(xué)習(xí))。

    文件:/pom.xml

    <!-- Spring integration --> <dependency> <groupId>org.springframework.integration</groupId><artifactId>spring-integration-core</artifactId> <version>2.1.3.RELEASE</version> </dependency>

    pom中的這一依賴性現(xiàn)在允許我的應(yīng)用程序通過channel發(fā)送消息 。 請注意,現(xiàn)在我們在Spring Integration領(lǐng)域中引用消息和通道,這不一定與本文前面在Enterprise Integration Patterns領(lǐng)域中引用的相同概念完全相同。 此時可能值得快速瀏覽一下《 Spring Integration參考手冊》 。 但是,如果您剛剛開始使用Spring Integration,那么暫時最好閱讀本文。 我建議您先洗手,然后再返回參考手冊,該手冊非常好,但也非常詳盡,因此對于初學(xué)者來說可能不勝枚舉。

    為簡單起見,由于我通常嘗試(盡可能)嘗試第一種方法,因此讓我們嘗試編寫一些單元測試以創(chuàng)建消息,然后通過通道發(fā)送它,然后再接收它。 我在這里寫了關(guān)于如何在Spring 3應(yīng)用程序中使用JUnit和Logback的博客 。 繼續(xù)相同的原理,假設(shè)我們要編寫一個HelloWorldTest.java,讓我們?yōu)闇y試設(shè)置Spring配置。

    文件:\ src \ test \ resources \ org \ academy \ integration \ HelloWorldTest-context.xml

    <?xml version='1.0' encoding='UTF-8'?> <beans xmlns='http://www.springframework.org/schema/beans'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:p='http://www.springframework.org/schema/p' xmlns:int='http://www.springframework.org/schema/integration' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-2.1.xsd'><int:channel id='inputChannel'></int:channel><int:channel id='outputChannel'><int:queue capacity='10' /></int:channel><int:service-activator input-channel='inputChannel'output-channel='outputChannel' ref='helloService' method='greet' /><bean id='helloService'class='org.academy.integration.HelloWorld' /> </beans>

    那么,我們只是做什么? 我們已經(jīng)要求Spring Integration創(chuàng)建一個“ inputChannel”來發(fā)送消息。 從中讀取消息的“ outputChannel”。 我們還配置了將“ inputChannel”上的所有消息都移交給“ helloService”的功能。 此“ helloService”是org.academy.integration.HelloWorld類的實例,應(yīng)具有對消息進行某些處理的能力。 之后,我們還配置了“ helloService”的輸出,即在這種情況下修改后的消息,將被移交給“ outputChannel”。 很簡單,不是嗎? 坦率地說,當我?guī)啄昵暗谝淮闻cSpring Integration合作時,我發(fā)現(xiàn)所有這些都令人困惑。 直到我看到這個工作對我來說,這沒有多大意義。 因此,讓我們繼續(xù)前進。 讓我們添加關(guān)鍵業(yè)務(wù) HelloWorld類。

    文件:/src/main/java/org/academy/integration/HelloWorld.java

    package org.academy.integration;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class HelloWorld {private final static Logger logger = LoggerFactory.getLogger(HelloWorld.class);public String greet(String name){logger.debug('Greeting {}', name); return 'Hello ' + name; } }

    如您所見,給定一個“名稱”,它將返回“ Hello {name}”。 現(xiàn)在,讓我們添加單元測試以實際執(zhí)行此操作。

    文件:/src/test/java/org/academy/integration/HelloWorldTest.java

    package org.academy.integration;import static org.junit.Assert.*;import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.integration.MessageChannel; import org.springframework.integration.core.PollableChannel; import org.springframework.integration.message.GenericMessage; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class HelloWorldTest {private final static Logger logger = LoggerFactory.getLogger(HelloWorldTest.class);@Autowired@Qualifier('inputChannel')MessageChannel inputChannel;@Autowired@Qualifier('outputChannel')PollableChannel outputChannel;@Testpublic void test() {inputChannel.send(new GenericMessage<String>('World'));assertEquals(outputChannel.receive().getPayload(), 'Hello World');logger.debug('Checked basic Hello World with Spring Integration');}}

    盡管不是強制性的,但我發(fā)現(xiàn)使用以下登錄設(shè)置更容易。 如果您愿意,可以隨時使用它。

    文件:/src/main/resources/logback.xml

    <?xml version='1.0' encoding='UTF-8'?> <configuration><appender name='CONSOLE' class='ch.qos.logback.core.ConsoleAppender'><encoder><pattern>%d %5p | %t | %-55logger{55} | %m %n</pattern></encoder></appender><logger name='org.springframework'><level value='ERROR' /><!-- level value='INFO' /> --><!-- level value='DEBUG' /> --></logger><root><level value='DEBUG' /><appender-ref ref='CONSOLE' /></root> </configuration>

    現(xiàn)在,只需鍵入“ mvn -e clean install”(或使用m2e插件),您就應(yīng)該能夠運行單元測試并確認給定的字符串“ World”,HelloWorld服務(wù)的確在整個通道安排中確實返回了“ Hello World”和消息。

    同樣,可選但我強烈建議您運行“ mvn -e全新安裝站點”。 假設(shè)您已正確配置了一些代碼覆蓋率工具(在我的情況下為cobertura),將為您提供一個不錯HTML報告,其中顯示了代碼覆蓋率。 在這種情況下,它將是100%。 我已經(jīng)寫了一系列關(guān)于代碼質(zhì)量的文章 ,詳細介紹了該主題,但是總而言之,確保我使用和推薦使用的任何編碼實踐/框架都符合一些基本的代碼質(zhì)量標準對我來說非常重要。 。 能夠進行單元測試和測量是我所做的這樣一項基本檢查。 毋庸置疑,一般來說,Spring(包括Spring集成)會通過帶有鮮艷色彩的檢查。

    結(jié)論

    本文就是這樣。 在下一篇文章中,我們將了解如何將應(yīng)用程序代碼與我們當前的JUnit測試中具有的Spring Integration特定代碼 (即inputChannel.send(…)等) 隔離 。

    建議進一步閱讀...
    以下是本系列早期文章的鏈接:

  • Hello World with Spring 3 MVC
  • 使用Spring 3 MVC處理表單
  • 使用Spring 3進行單元測試和記錄
  • 使用Spring 3 MVC處理表單驗證
  • 這些是我可以推薦的出色材料:

  • Spring Integration入門
  • Spring Integration的示例代碼
  • Spring集成–第1節(jié)– Hello World
  • Spring集成–第2節(jié)–更多世界
  • 繼續(xù)與網(wǎng)關(guān)進行Spring集成

    參考:在Tech for Enterprise博客中,我們的JCG合作伙伴 Partho 介紹了Spring Integration 。


    翻譯自: https://www.javacodegeeks.com/2012/08/introducing-spring-integration.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

    以上是生活随笔為你收集整理的引入Spring集成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。