Last updated
Last updated
classpath에 Spring WebFlux가 있으면 WebClient
를 사용하여 원격 REST 서비스를 호출하도록 선택할 수도 있습니다. RestTemplate
과 비교하여, 이 클라이언트는 더 기능적인 느낌을 가지며 완전히 반응합니다. WebClient
에 대한 자세한 내용은 의 전용 섹션에서 확인할 수 있습니다.
Spring Boot는 WebClient.Builder
를 생성하고 사전 구성합니다. 구성 요소에 삽입하여 WebClient
인스턴스를 만드는 것이 좋습니다. Spring Boot는 HTTP 리소스를 공유하고 코덱을 서버와 같은 방식으로 반영하도록 해당 빌더를 구성합니다 (참조).
다음 코드는 일반적인 예를 보여줍니다.
Spring Boot는 응용 프로그램 클래스 경로에서 사용할 수있는 라이브러리에 따라 WebClient
를 구동하는 데 사용할 ClientHttpConnector
를 자동으로 감지합니다. 지금은 Reactor Netty 및 Jetty RS 클라이언트가 지원됩니다.
spring-boot-starter-webflux
스타터는 기본적으로 io.projectreactor.netty:reactor-netty
에 의존하며, 이는 서버와 클라이언트 구현 모두를 가져옵니다. Jetty를 반응 형 서버로 대신 사용하는 경우 Jetty Reactive HTTP 클라이언트 라이브러리 인 org.eclipse.jetty:jetty-reactive-httpclient
를 추가해야합니다. 서버와 클라이언트에 동일한 기술을 사용하면 클라이언트와 서버간에 HTTP 리소스를 자동으로 공유하므로 이점이 있습니다.
개발자는 사용자 정의 ReactorResourceFactory
또는 JettyResourceFactory
빈을 제공하여 Jetty 및 Reactor Netty의 자원 구성을 대체 할 수 있습니다. 이는 클라이언트와 서버 모두에 적용됩니다.
클라이언트에 대한 선택 사항을 대체하려면 클라이언트 고유의 ClientHttpConnector
Bean을 정의하고 클라이언트 구성을 완전히 제어 할 수 있습니다.
WebClient
커스터마이제이션을 적용하려는 세 가지 방법에 따라 세 가지 주요 방법 이 있습니다.
가능한 모든 사용자 정의 범위를 좁히려면 자동 구성된 WebClient.Builder
를 삽입 한 다음 필요에 따라 해당 메서드를 호출하십시오. WebClient.Builder
인스턴스는 상태 정보입니다. 빌더의 모든 변경 사항은 이후에 작성된 모든 클라이언트에 반영됩니다. 동일한 빌더로 여러 클라이언트를 작성하려는 경우 WebClient.Builder other = builder.clone();
을 사용하여 빌더 복제를 고려할 수도 있습니다.
모든 WebClient.Builder
인스턴스에 대한 응용 프로그램 차원의 추가 사용자 지정을 수행하려면 WebClientCustomizer
Bean을 선언하고 WebClient.Builder
를 주입 지점에서 로컬로 변경할 수 있습니다.
마지막으로 원래 API로 되돌아 가서 WebClient.create()
를 사용할 수 있습니다. 이 경우 자동 구성 또는 WebClientCustomizer
가 적용되지 않습니다.
구성 옵션에 대한 자세한 내용은 를 참조하십시오.