javascript
Spring与网关的集成
上下文設(shè)置
在第一篇文章中,我們創(chuàng)建了一個(gè)簡(jiǎn)單的Java應(yīng)用程序,其中
但是,在執(zhí)行此操作時(shí)(請(qǐng)記住,我們只是在此處介紹概念),我們?cè)趹?yīng)用程序中編寫(xiě)了一些特定于Spring的代碼,即測(cè)試類(lèi)。 在本文中,我們將解決這個(gè)問(wèn)題,并使我們的應(yīng)用程序代碼與Spring Integration api盡可能隔離。
這是通過(guò)Spring Integration稱(chēng)為gateways來(lái)完成的 。 存在網(wǎng)關(guān)的唯一目的是將消息傳遞相關(guān)的“管道”代碼從“業(yè)務(wù)”代碼中抽象出來(lái)。 業(yè)務(wù)邏輯可能實(shí)際上并不在乎是通過(guò)通道發(fā)送消息還是通過(guò)進(jìn)行SOAP調(diào)用來(lái)實(shí)現(xiàn)功能。 到目前為止,這種抽象雖然合乎邏輯且合乎需要,但并非十分實(shí)用。
此時(shí)可能值得快速瀏覽一下《 Spring Integration參考手冊(cè)》 。 但是,如果您剛剛開(kāi)始使用Spring Integration,那么暫時(shí)最好閱讀本文。 我建議您先洗手,然后再返回參考手冊(cè),該手冊(cè)非常好,但也非常詳盡,因此對(duì)于初學(xué)者來(lái)說(shuō)可能不勝枚舉。
網(wǎng)關(guān)可以是帶有批注的POJO(這很方便,但在我看來(lái)卻超出了整個(gè)目的)或具有XML配置(如果未經(jīng)檢查,它很快會(huì)變成任何體面大小的應(yīng)用程序的噩夢(mèng))。 歸根結(jié)底,這確實(shí)是您的選擇,但是我喜歡走XML路線(xiàn)。 兩種樣式的配置選項(xiàng)在參考實(shí)現(xiàn)的本節(jié)中詳細(xì)介紹。
Spring與網(wǎng)關(guān)的集成
因此,讓我們?yōu)镠elloWorld服務(wù)創(chuàng)建另一個(gè)帶有網(wǎng)關(guān)拋出的測(cè)試(有關(guān)更多上下文,請(qǐng)參閱本系列的第一篇文章 )。 讓我們從測(cè)試的Spring配置開(kāi)始。
文件:src / test / resources / org / academy / integration / HelloWorld1Test-context.xml
在這種情況下,所有不同之處在于我們添加了一個(gè)網(wǎng)關(guān)。 這是一個(gè)稱(chēng)為org.academy.integration.Greetings的接口。 它與“ inputChannel”和“ outputChannel”交互,分別發(fā)送和讀取消息。 讓我們編寫(xiě)界面。
文件:/src/main/java/org/academy/integration/Greetings.java
package org.academy.integration;public interface Greetings {public void send(String message);public String receive();}然后,我們添加此接口的實(shí)現(xiàn)。 等待。 沒(méi)有實(shí)現(xiàn)。 而且我們不需要任何實(shí)現(xiàn)。 Spring使用一種名為GatewayProxyFactoryBean的東西向該網(wǎng)關(guān)注入一些基本代碼,從而使它可以讀取基于字符串的簡(jiǎn)單消息,而無(wú)需我們做任何事情。 那就對(duì)了。 沒(méi)事
注–假設(shè)您不是在使用Spring Integration框架只是推敲字符串, 就需要為大多數(shù)生產(chǎn)方案添加更多代碼 。 因此,不要習(xí)慣免費(fèi)午餐。 但是,盡管它在這里,讓我們深入研究。
現(xiàn)在,讓我們使用網(wǎng)關(guān)編寫(xiě)一個(gè)新的測(cè)試類(lèi)(并且完全不與通道和消息進(jìn)行交互)。
文件:/src/test/java/org/academy/integration/HelloWorld1Test.java
現(xiàn)在我們的測(cè)試班要干凈得多。 它根本不了解頻道,消息或與Spring Integration相關(guān)的任何信息。 它只知道一個(gè)問(wèn)候?qū)嵗?#xff08;通過(guò).send()方法向其提供一些數(shù)據(jù)),并通過(guò).receive()方法獲取修改后的數(shù)據(jù)。 因此, 業(yè)務(wù)邏輯忽略了管道邏輯 ,從而使代碼更加簡(jiǎn)潔。
現(xiàn)在,只需鍵入“ mvn -e clean install”(或使用m2e插件),您就應(yīng)該能夠運(yùn)行單元測(cè)試并確認(rèn)給定的字符串“ World”,HelloWorld服務(wù)的確在整個(gè)通道安排中確實(shí)返回了“ Hello World”和消息。
同樣,可選但我強(qiáng)烈建議您運(yùn)行“ mvn -e全新安裝站點(diǎn)”。 假設(shè)您已正確配置了一些代碼覆蓋率工具(在我的情況下為cobertura),將為您提供一個(gè)不錯(cuò)HTML報(bào)告,其中顯示了代碼覆蓋率。 在這種情況下,它將是100%。 我已經(jīng)寫(xiě)了一系列關(guān)于代碼質(zhì)量的文章 ,詳細(xì)介紹了該主題,但是總而言之,確保我使用和推薦使用的任何編碼實(shí)踐/框架都符合一些基本的代碼質(zhì)量標(biāo)準(zhǔn)對(duì)我來(lái)說(shuō)非常重要。 。 能夠進(jìn)行單元測(cè)試和測(cè)量是我所做的這樣一項(xiàng)基本檢查。 毋庸置疑,一般來(lái)說(shuō),Spring(包括Spring集成)會(huì)通過(guò)帶有鮮艷色彩的檢查。
結(jié)論
本文就是這樣。 快樂(lè)的編碼。
建議進(jìn)一步閱讀...
以下是本系列早期文章的鏈接:
這些是我可以推薦的出色材料:
參考: Tech for Enterprise博客上我們JCG合作伙伴 Partho的Spring與Gatways的集成 。
翻譯自: https://www.javacodegeeks.com/2012/08/spring-integration-with-gateways.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Spring与网关的集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cad快捷键功能区(cad功能区命令快捷
- 下一篇: Spring和JSF集成:异常处理