Extensions

Kotlin 扩展 为扩展现有类提供了额外的功能。Spring Framework Kotlin API 使用这些扩展来为现有的 Spring API 添加新的 Kotlin 特有便利。

Spring Framework KDoc API 列出并记录了所有可用的 Kotlin 扩展和 DSL。

请记住,需要导入 Kotlin 扩展才能使用它们。这意味着,例如,GenericApplicationContext.registerBean Kotlin 扩展仅在导入 org.springframework.context.support.registerBean 时可用。也就是说,与静态导入类似,在大多数情况下,IDE 会自动建议导入。

例如,https://kotlinlang.org/docs/inline-functions.html#reified-type-parameters[Kotlin 具体类型参数] 为 JVM 泛型类型擦除 提供了解决方法,Spring Framework 提供了一些扩展来利用此特性。这允许获得更好的 Kotlin API RestTemplate,用于 Spring WebFlux 的新 WebClient,以及各种其他 API。

Reactor 和 Spring Data 等其他库也提供了适用于其 API 的 Kotlin 扩展,从而总体上提供了更好的 Kotlin 开发体验。

为了在 Java 中检索 User 对象的列表, 您通常会编写以下内容:

Flux<User> users  = client.get().retrieve().bodyToFlux(User.class)

使用 Kotlin 和 Spring 框架扩展, 您可以编写以下内容:

val users = client.get().retrieve().bodyToFlux<User>()
// or (both are equivalent)
val users : Flux<User> = client.get().retrieve().bodyToFlux()

与在 Java 中一样, Kotlin 中的 users 是强类型, 但 Kotlin 巧妙的类型推断允许使用较短的语法。