Search
β˜•

WebFlux 흐름

β€’
WebFlux λŠ” 크게 두 λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λœλ‹€.
β—¦
publisher 생성 λΆ€λΆ„
β—¦
publisher subscribe λΆ€λΆ„
β€’
이 두 뢀뢄은 reactor.netty.http.server νŒ¨ν‚€μ§€μ˜ HttpServer$onStateChange λ©”μ„œλ“œμ—μ„œ μ‹€ν–‰λœλ‹€.
β—¦
Publisher<Void> publisher = (Publisher)this.handler.apply(ops, ops);
β—¦
mono.subscribe(ops.disposeSubscriber());

HttpWebHandlerAdapter

β€’
publisher 생성 핡심 클래슀
β€’
handle ν˜ΈμΆœλ˜λŠ” κ³Όμ •
β—¦
this.handler.apply(ops, ops) β†’ ReactorHttpHandlerAdapter$apply 호좜
β–ͺ
ReactorHttpHandlerAdapter μ—μ„œλŠ” request 와 response λ₯Ό 생성
ReactorServerHttpRequest request = new ReactorServerHttpRequest(reactorRequest, bufferFactory); ServerHttpResponse response = new ReactorServerHttpResponse(reactorResponse, bufferFactory);
JavaScript
볡사
β—¦
this.httpHandler.handle(request, response) β†’ WebServerManager$DelayedInitializationHttpHandler$handle 호좜
β—¦
this.delegate.handle(request, response) β†’ HttpWebHandlerAdapter$handle 호좜
β€’
exchange 생성
ServerWebExchange exchange = this.createExchange(request, response);
JavaScript
볡사
β€’
ExceptionHandlingWebFilter, FilteringWebHandler β†’ extends WebHandlerDecorator
β€’
DefaultWebFilterChain$filter μ—μ„œ Mono.defer(() β†’ {}) 둜 Mono defer λ₯Ό λ§Œλ“ λ‹€.

DispatcherHandler

β€’
subscribe 핡심 클래슀
β€’
subscribe ν•˜λ©΄ DefaultWebFilterChain$filter {} μ•ˆμ˜ handler.handle() 둜 DispatcherHandler κ°€ 호좜됨.