Spring-boot-starter-web-reactive зависимость M4

В Spring Web Reactive есть класс WebClient and ClientRequest. Если мы посмотрим на документацию, то ниже приведен способ использования ClientRequest с помощью WebClient.

WebClient client = WebClient.create(new ReactorClientHttpConnector());
ClientRequest<Void> request =      ClientRequest.GET("http://example.com/resource").build();

Mono<String> result = client
 .exchange(request)
 .then(response -> response.bodyToMono(String.class));

Но, к сожалению, метод ClientRequest.GET недоступен с зависимостью gradle, которую я добавил в свой проект. Ниже приведена зависимость Gradle, которую я использую:

    dependencies {
    compile('org.springframework.boot.experimental:spring-boot-starter-web-reactive')
    compile('org.springframework.cloud:spring-cloud-starter-eureka')
    compile('org.springframework.boot:spring-boot-starter-hateoas')
    compile('io.reactivex:rxjava')
    compile('io.reactivex:rxjava-reactive-streams')
    //Spring Test case dependency
    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile('io.rest-assured:rest-assured:3.0.1')
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:Dalston.BUILD-SNAPSHOT"
        mavenBom "org.springframework.boot.experimental:spring-boot-dependencies-web-reactive:0.1.0.BUILD-SNAPSHOT"
    }
}

Я не смог найти зависимости для M4. Публикуется ли M4 где-нибудь в каком-нибудь репозитории?


person Munish Dhiman    schedule 31.01.2017    source источник


Ответы (2)


Этот стартер Spring Boot зависит от текущих снимков Spring Framework 5.0. API WebClient эволюционировал недавно и справочная документация должна быть актуальной.

Теперь ваш пример можно записать:

WebClient client = WebClient.create("http://example.com/");

Mono<String> result = client
  .get("/resource")
  .exchange()
  .then(response -> response.bodyToMono(String.class));
person Brian Clozel    schedule 05.02.2017
comment
Спасибо @Brain за ваш ответ. Я смог использовать WebClient, но теперь возникла другая проблема. Когда от удаленной службы поступает ответ об ошибке, он не предоставляет данные, отправленные удаленной службой. Я вызываю микросервис из своего реактивного контроллера отдыха, и в случае ошибки он передает только HttpStatus моему контроллеру отдыха. Подробности можно найти здесь stackoverflow.com/questions/42045267/ - person Munish Dhiman; 05.02.2017

Вам необходимо настроить правильный репозиторий. M4, т.е. этапные проекты, не находятся в том же репозитории, что и общие выпуски. Фактически, в Spring есть отдельный репозиторий для релизов моментальных снимков. Проверьте Spring репозитории

Для промежуточных выпусков используйте репозиторий ниже:

buildscript {
    repositories {
        jcenter()
        maven { url 'http://repo.spring.io/milestone' }
    }
}
person nanosoft    schedule 10.11.2017