<aside> ๐ [LIST]
</aside>
Spring WebFlux๋ Spring 5์์ ๋์ ๋ ๋น๋๊ธฐ(Asynchronous) & ๋ ผ๋ธ๋กํน(Non-blocking) ๋ฐฉ์์ ๋ฆฌ์กํฐ๋ธ ์น ํ๋ ์์ํฌ์ ๋๋ค. WebFlux๋ Reactive Streams ๋ช ์ธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ผ๋ฉฐ, Project Reactor๋ฅผ ์ฃผ์ ๊ตฌํ์ฒด๋ก ์ฌ์ฉํฉ๋๋ค.
Spring WebFlux๋ Reactive Programming์ ์ง์ํ๋ ๋น๋๊ธฐ ์น ํ๋ ์์ํฌ๋ก, ๊ธฐ์กด์ Spring MVC๊ฐ Servlet ๊ธฐ๋ฐ์ ๋๊ธฐ(Blocking) ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ๋น๋๊ธฐ(Non-blocking) ์คํธ๋ฆผ ๊ธฐ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
Publisher
, Subscriber
๊ฐ๋
์ ํ์ฉํฉ๋๋ค.Mono
, Flux
)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆฌ๋ฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.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");