扩展

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

Spring 框架 KDoc API 中列出了所有可用的 Kotlin 扩展和 DSL 并提供了文档。

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

例如,Kotlin 具现化类型参数 为 JVM 泛型类型擦除 提供了一种解决方法,并且 Spring 框架提供了一些扩展来利用此功能。这使得可以为 Spring WebFlux 中新的 WebClientRestTemplate 以及其他各种 API 提供更好的 Kotlin 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 的智能类型推断允许使用更短的语法。