Spring Reactor Operators

如何使用 Spring 打造的 Reactor 改寫難以閱讀 的 try catch

Bruce Hsu
4 min readMar 10, 2021

前言

程式寫了一段時間之後,很多時候為了異常錯誤的處理,或是多個邏輯混雜在程式內時,常常日子久了會造成維護上的不便。

自從開始進入 Reactive Programing 之後,由於思考模式比較重視 function flow,所以希望自己的外層程式內,盡量不要再出現 try catch,switch case這類的流程控制區塊。

所以我們接著來看看,以往的 Java 經典做法,如何利用 Spring Reactor Operators 來改頭換面。

Reactor Operators

Reactor map 與 flatMap

Reactor 與 Java Stream Api 的 map 與 flatMap 概念完全不一樣,這裡我們不多花時間,直接來看看這兩個的差異。

我們有一個需求需要將一個 Java Collections 做處理並轉換,我們先看看基本Java經典寫法

那如果我們使用 Reactor Flow ,我們來看看map與flatMap的差別

map 與 flatMap,其實就是 Java 做邏輯處理時常會出現的 call method 後返回一個新物件,當然在 spring reactor 裡,這兩個 operator 也一樣是 non-blocking 的。

作用就是 Java 8 引入的 functional interfaceFunction。(如果不知道我在說什麼可以看這裡 Baeldung )

--

--

Bruce Hsu

I'm a Java engineer, eager to learn new skills, technique and willing to take challenges.