协程上下文有什么问题?

时间:2019-07-03 18:43:27

标签: spring kotlin kotlin-coroutines

我正在尝试使用Spring 5.2的新功能-与kotlin协程集成,但是在运行时,我始终具有NPE。例如:

  @RestController
  class SomeController() {

      val webClient = WebClient.builder()
        .baseUrl("https://www.google.com")
        .build()

      @GetMapping
      suspend fun get(): String? {
          return webClient
              .get()
              .awaitExchange()
              .awaitBody()
      }
  }

.awaitExchange()上的NPE:

kotlin.KotlinNullPointerException: null
    at kotlin.coroutines.jvm.internal.ContinuationImpl.getContext(ContinuationImpl.kt:105) ~[kotlin-stdlib-1.3.40.jar:1.3.40-release-123 (1.3.40)]
    at kotlin.coroutines.jvm.internal.ContinuationImpl.<init>(ContinuationImpl.kt:102) ~[kotlin-stdlib-1.3.40.jar:1.3.40-release-123 (1.3.40)]
    at org.springframework.web.reactive.function.client.WebClientExtensionsKt$awaitExchange$1.<init>(WebClientExtensions.kt) ~[spring-webflux-5.2.0.M3.jar:5.2.0.M3]
    at org.springframework.web.reactive.function.client.WebClientExtensionsKt.awaitExchange(WebClientExtensions.kt) ~[spring-webflux-5.2.0.M3.jar:5.2.0.M3]
    at com.test.SomeController.get$suspendImpl(SomeController.kt:22) ~[classes/:na]
    at com.test.SomeController.get(SomeController.kt) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_171]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171]
    at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:146) ~[spring-webflux-5.2.0.M3.jar:5.2.0.M3]
    at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118) [reactor-core-3.3.0.M2.jar:3.3.0.M2]
    at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1575) ~[reactor-core-3.3.0.M2.jar:3.3.0.M2]
...

有什么主意我做错了吗?

P.s。 gradle依赖项:

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation(group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version = "1.2.2")
    implementation(group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-reactor", version = "1.2.2")

    implementation(group = "org.springframework.boot", name = "spring-boot-starter-webflux", version = "2.2.0.M4")
}

谢谢!

0 个答案:

没有答案