Текущий Javadoc состояний RestTemplate:
ПРИМЕЧАНИЕ. Начиная с версии 5.0 неблокирующий реактивный org.springframework.web.reactive.client.WebClient предлагает современную альтернативу RestTemplate с эффективной поддержкой как синхронизации, так и асинхронности, а также потоковых сценариев. RestTemplate будет объявлен устаревшим в будущей версии, и в нем не будут добавлены новые важные функции.
Мы пишем новый проект, используя Spring Boot 2.0.6 и Spring 5.0.10.
Учитывая, что restTemplate будет устаревшим, мы решили использовать новый WebClient, который также должен иметь поддержку синхронизирующих вызовов. Но я не смог найти никакой документации о том, как этого добиться.
Я использовал блок для этого, как показано в коде ниже:
ResponseEntity<String> response = webClient.get()
.uri(url)
.exchange()
.flatMap(r -> r.toEntity(String.class))
.block();
Однако это исключение ниже, когда вызывается из контроллера пружины
java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread
Так как именно следует использовать WebClient синхронно?
РЕДАКТИРОВАТЬ: мой pom.xml выглядит так:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>