<aside> ๐Ÿ“– [LIST]

</aside>

๐Ÿš€ Spring WebFlux ํ•™์Šต ๊ฐ€์ด๋“œ

Spring WebFlux๋Š” Spring 5์—์„œ ๋„์ž…๋œ ๋น„๋™๊ธฐ(Asynchronous) & ๋…ผ๋ธ”๋กœํ‚น(Non-blocking) ๋ฐฉ์‹์˜ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. WebFlux๋Š” Reactive Streams ๋ช…์„ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Project Reactor๋ฅผ ์ฃผ์š” ๊ตฌํ˜„์ฒด๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ Spring WebFlux๋ž€?

Spring WebFlux๋Š” Reactive Programming์„ ์ง€์›ํ•˜๋Š” ๋น„๋™๊ธฐ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ธฐ์กด์˜ Spring MVC๊ฐ€ Servlet ๊ธฐ๋ฐ˜์˜ ๋™๊ธฐ(Blocking) ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, ๋น„๋™๊ธฐ(Non-blocking) ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

โœ… WebFlux ํŠน์ง•

  1. ๋น„๋™๊ธฐ & ๋…ผ๋ธ”๋กœํ‚น
  2. ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ(Reactive Streams) ๊ธฐ๋ฐ˜
  3. Project Reactor ๊ธฐ๋ฐ˜
  4. ๋†’์€ ํ™•์žฅ์„ฑ & ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์†Œ๋น„

2๏ธโƒฃ Mono์™€ Flux์˜ ์ฐจ์ด

WebFlux์—์„œ๋Š” Mono์™€ Flux๋ผ๋Š” ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Mono<T> Flux<T>
๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ์ตœ๋Œ€ 1๊ฐœ 0๊ฐœ ์ด์ƒ
์‚ฌ์šฉ ์˜ˆ์‹œ ๋‹จ์ผ ๊ฐ์ฒด ๋ฐ˜ํ™˜ (ex. ์‚ฌ์šฉ์ž ์ •๋ณด) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ (ex. ๋ฐ์ดํ„ฐ ๋ชฉ๋ก)
๊ตฌ๋… ๋ฐฉ์‹ mono.subscribe() flux.subscribe()

๐Ÿ“Œ ์˜ˆ์ œ ์ฝ”๋“œ


Mono<String> monoExample = Mono.just("Hello, WebFlux!");
Flux<String> fluxExample = Flux.just("Hello", "WebFlux", "World");