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 가 호출됨.