扩展

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 提供了一些扩展来利用此功能。 这为 RestTemplate、Spring WebFlux 中的新 WebClient 以及各种其他 API 提供了更好的 Kotlin API。

其他库,如 Reactor 和 Spring Data,也为它们的 API 提供了 Kotlin 扩展, 从而提供了更好的整体 Kotlin 开发体验。

要在 Java 中检索 User 对象列表,通常会编写以下代码:

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

使用 Kotlin 和 Spring Framework 扩展,您可以改为编写以下代码:

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

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