Spring Boot 與 Spring Integration 整合教程

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取

點擊前往百度網盤獲取
點擊前往夸克網盤獲取


Spring Boot 與 Spring Integration 整合教程

簡介

Spring Integration 是 Spring 生態系統中用于實現企業集成模式(Enterprise Integration Patterns, EIP)的框架,支持消息驅動、通道、路由、過濾等特性。結合 Spring Boot 的自動配置能力,可以快速構建輕量級集成應用。


環境準備

  1. JDK 17+
  2. Maven 3.8+ 或 Gradle
  3. IDE(推薦 IntelliJ IDEA 或 VS Code)

步驟 1:創建 Spring Boot 項目

通過 Spring Initializr 創建項目,添加以下依賴:

  • Spring Web(可選,用于 HTTP 集成)
  • Spring Integration
  • Spring Integration File(文件處理示例)
  • Lombok(簡化代碼)

生成 pom.xml 關鍵依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-file</artifactId>
</dependency>

步驟 2:配置 Spring Integration

2.1 啟用 Integration 配置

在啟動類添加 @EnableIntegration 注解:

@SpringBootApplication
@EnableIntegration
public class IntegrationApplication {public static void main(String[] args) {SpringApplication.run(IntegrationApplication.class, args);}
}

2.2 配置文件通道(可選)

application.properties 中配置默認通道:

# 設置輪詢器線程池大小
spring.task.execution.pool.core-size=5

步驟 3:實現文件處理示例

3.1 創建文件輸入通道

@Configuration
public class FileIntegrationConfig {@Beanpublic MessageChannel fileInputChannel() {return new DirectChannel();}@Bean@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "1000"))public MessageSource<File> fileReadingMessageSource() {FileReadingMessageSource source = new FileReadingMessageSource();source.setDirectory(new File("input"));source.setFilter(new SimplePatternFileListFilter("*.txt"));return source;}@Bean@ServiceActivator(inputChannel = "fileInputChannel")public MessageHandler fileProcessingHandler() {return message -> {File file = (File) message.getPayload();System.out.println("Processing file: " + file.getName());// 實現文件處理邏輯};}
}

步驟 4:HTTP 請求處理示例

4.1 添加 HTTP 支持

@Configuration
@EnableIntegration
public class HttpIntegrationConfig {@Beanpublic HttpRequestHandlerEndpointSpec httpInboundGateway() {return IntegrationFlows.from(Http.inboundChannelAdapter("/receive").requestMapping(m -> m.methods(HttpMethod.POST))).handle(message -> {String payload = (String) message.getPayload();System.out.println("Received: " + payload);}).get();}
}

步驟 5:消息路由示例

@Bean
public IntegrationFlow routingFlow() {return IntegrationFlows.from("inputChannel").<String, Boolean>route(payload -> payload.contains("urgent"),mapping -> mapping.subFlowMapping(true, sf -> sf.channel("highPriorityChannel")).subFlowMapping(false, sf -> sf.channel("normalChannel"))).get();
}@Bean
public MessageChannel highPriorityChannel() {return MessageChannels.direct().get();
}@Bean
public MessageChannel normalChannel() {return MessageChannels.direct().get();
}

步驟 6:測試應用

6.1 編寫測試類

@SpringBootTest
@AutoConfigureMockMvc
public class IntegrationTest {@Autowiredprivate MockMvc mockMvc;@Testpublic void testHttpIntegration() throws Exception {mockMvc.perform(post("/receive").contentType(MediaType.TEXT_PLAIN).content("Test Message")).andExpect(status().isOk());}
}

6.2 運行測試

input 目錄放置 .txt 文件,觀察控制臺輸出。


常見應用場景

  1. 文件監控處理:自動處理新增文件
  2. 消息隊列集成:連接 RabbitMQ/Kafka
  3. 數據庫同步:通過 JDBC 適配器同步數據
  4. 系統間通信:使用 HTTP/FTP/SFTP 協議交互

擴展學習

  • 官方文檔:Spring Integration Reference
  • 高級特性:事務支持、錯誤處理、自定義組件
  • 書籍推薦:《Spring Integration in Action》

通過本教程,您可以快速實現 Spring Boot 與 Spring Integration 的整合,構建靈活的企業級集成應用。建議通過實際項目需求逐步探索更多集成模式。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899933.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx 核心配置詳解與性能優化最佳實踐

1.什么是 Nginx&#xff1f; Nginx 是一個高性能的 Web 服務器和反向代理服務器。它輕量、高效&#xff0c;被廣泛用于現代 Web 開發中。 2.為什么前端需要了解 Nginx&#xff1f; ★ 了解 本地開發&#xff1a;可以模擬生產環境 部署前端項目&#xff1a;作為靜態文件服務器…

LayaAir3.3.0-beta.3重磅更新!Spine4.2、2D物理、UI系統、TileMap等全面升級!

正式版推出前&#xff0c;說明3.3的功能還沒開發完。所以&#xff0c;又一大波更新來了~ 下面對重點更新進行說明。 Spine的重要更新 3.3.0-beta.3版本開始&#xff0c;新增了Spine 4.2 的運行時庫&#xff0c;Spine動畫上可以支持物理特性了。例如&#xff0c;下圖右側女孩在啟…

pip安裝timm依賴失敗

在pycharm終端給虛擬環境安裝timm庫失敗&#xff08; pip install timm&#xff09;&#xff0c;提示你要訪問 https://rustup.rs/ 來下載并安裝 Rust 和 Cargo 直接不用管&#xff0c;換一條命令 pip install timm0.6.13 成功安裝 簡單粗暴

BUUCTF-web刷題篇(7)

16.BackupFile 題目提示backupfile&#xff0c;是備份文件的意思&#xff1a; 查看源碼沒有什么有用信息&#xff0c;也沒有登錄界面&#xff0c;所以也不會用到蟻劍鏈接來找備份文件&#xff0c;所以大概率就是通過構造playload來查找備份文件。 注&#xff1a;備份文件常用…

Maven 構建生命周期

Maven 構建生命周期 引言 Maven 是一個強大的項目管理和構建自動化工具,廣泛應用于 Java 開發領域。Maven 的核心概念之一是構建生命周期,它定義了從項目創建到構建、測試、打包、部署等一系列操作的流程。本文將詳細介紹 Maven 的構建生命周期,幫助讀者更好地理解和使用 …

PyTorch 深度學習實戰(29):目標檢測與 YOLOv12 實戰

在上一篇文章中,我們探討了對比學習與自監督表示學習。本文將深入計算機視覺的核心任務之一——目標檢測,重點介紹最新的 YOLOv12 (You Only Look Once v12) 算法。我們將使用 PyTorch 實現 YOLOv12 模型,并在 COCO 數據集上進行訓練和評估。 一、YOLOv12 基礎 YOLOv12 是 …

使用Leaflet對的SpringBoot天地圖路徑規劃可視化實踐-以黃花機場到橘子洲景區為例

目錄 前言 一、路徑規劃需求 1、需求背景 2、技術選型 3、功能簡述 二、Leaflet前端可視化 1、內容布局 2、路線展示 3、轉折路線展示 三、總結 前言 在當今數字化與智能化快速發展的時代&#xff0c;路徑規劃技術已經成為現代交通管理、旅游服務以及城市規劃等領域的…

深入理解 CSS 選擇器:從基礎到高級的樣式控制

引言 在網頁設計與開發中&#xff0c;CSS&#xff08;層疊樣式表&#xff09;扮演著至關重要的角色&#xff0c;它賦予了 HTML 頁面豐富的視覺效果和交互性。而 CSS 選擇器則是 CSS 的核心機制之一&#xff0c;通過選擇器&#xff0c;我們能夠精準地指定要應用樣式的 HTML 元素…

GitHub與Gitee各是什么?它們的區別與聯系是什么?

李升偉 整理 GitHub 介紹 GitHub 是一個基于 Git 的代碼托管平臺&#xff0c;主要用于版本控制和協作開發。它支持多人協作&#xff0c;提供代碼托管、問題跟蹤、代碼審查、項目管理等功能。GitHub 是全球最大的開源社區&#xff0c;許多知名開源項目都在此托管。 主要功能&…

ESLint語法報錯

ESLint語法報錯 運行報錯 You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file.解決方案 關閉eslint的語法檢測&#xff0c;在eslintrc.js文件中…

單例模式與線程安全

目錄 線程安全和重?問題 死鎖和活鎖 死鎖 死鎖四個必要條件 活鎖 STL,智能指針和線程安全 線程安全的單例模式 餓漢模式 懶漢模式 懶漢模式實現單例模式(線程安全版本) 餓漢模式實現單例模式 我們來學習單例模式與線程安全 線程安全和重?問題 線程安全&#xff…

Python+AI提示詞用貝葉斯樣條回歸擬合BSF方法分析櫻花花期數據模型構建跡圖、森林圖可視化

原文鏈接&#xff1a;https://tecdat.cn/?p41308 在數據科學的領域中&#xff0c;我們常常會遇到需要處理復雜關系的數據。在眾多的數據分析方法中&#xff0c;樣條擬合是一種非常有效的處理數據非線性關系的手段。本專題合集圍繞如何使用PyMC軟件&#xff0c;對櫻花花期數據進…

WPF學習路線

WPF學習路線 學習準備學習技術棧學習路線 1-5&#xff08;1-2周&#xff09;6-8&#xff08;3-5周&#xff09; 學習準備 個人認為前端技術一般幾個關鍵字&#xff1a;元素資源 控制元素資源組合或者動態交互 數據交互呈現分析關鍵字得到的就是幾個方向 布局 樣式 組裝資源控件…

31天Python入門——第20天:魔法方法詳解

你好&#xff0c;我是安然無虞。 文章目錄 魔法方法1. __new__和__del__2. __repr__和__len__3. __enter__和__exit__4. 可迭代對象和迭代器5. 中括號[]數據操作6. __getattr__、__setattr__ 和 __delattr__7. 可調用的8. 運算符 魔法方法 魔法方法: Python中的魔法方法是一類…

棧 —— 數據結構基礎刷題路程

一、P1739 表達式括號匹配 - 洛谷 算法代碼&#xff1a; #include<bits/stdc.h> using namespace std; const int N300008; struct mystack {int a[N];int t-1;//壓棧void push(int data){a[t]data; } //取棧頂元素int top(){return a[t]; } //彈出棧頂元素void pop(){i…

瑞昱RTD2556QR顯示器驅動芯片

一、概述 RTD2556QR芯片是由Realtek公司精心研發的一款高性能顯示驅動芯片&#xff0c;專為滿足現代顯示設備對高分辨率、多功能接口及穩定性能的需求而設計。該芯片憑借其卓越的技術特性和廣泛的應用領域&#xff0c;在顯示驅動市場中占據重要地位。它集成了多種先進的功能模…

PyQt5和OpenCV車牌識別系統

有需要請加文章底部Q哦 可遠程調試 PyQt5和OpenCV車牌識別系統 一 介紹 此車牌識別系統基于PyQt5和OpenCV開發&#xff0c;藍牌&#xff0c;新能源(綠牌)&#xff0c;黃牌&#xff0c;白牌均可以準確識別&#xff0c;支持中文識別&#xff0c;可以導出識別結果(Excel格式)。此…

學有所記- 探索FastAPI在docker上的部署

目標&#xff1a; 學習怎樣在docker中安裝部署FastAPI&#xff0c;完成項目結構的搭建以及hello world的運行 背景&#xff1a; 公司內服務器資源有限&#xff0c;為了共享算力資源&#xff0c;同時又能隔離運行環境&#xff0c;因此采用了docker部署的方式&#xff0c;進行各…

HTTP keepalive 詳解

一、簡介 HTTP協議早期版本&#xff0c;比如1.0&#xff0c;默認是不使用持久連接的&#xff0c;也就是每個請求/響應之后都會關閉TCP連接。這樣的話&#xff0c;每次請求都需要重新建立連接&#xff0c;增加了延遲和資源消耗。Keep-Alive的作用是保持連接&#xff0c;讓多個請…

長短期記憶神經網絡(LSTM)基礎學習與實例:預測序列的未來

目錄 1. 前言 2. LSTM的基本原理 2.1 LSTM基本結構 2.2 LSTM的計算過程 3. LSTM實例&#xff1a;預測序列的未來 3.1 數據準備 3.2 模型構建 3.3 模型訓練 3.4 模型預測 3.5 完整程序預測序列的未來 4. 總結 1. 前言 在深度學習領域&#xff0c;循環神經網絡&…