Kotlin 语言参考文档 中文版 Help

向 Spring Boot 项目添加数据类

在教程的这个部分, 你将会向应用程序添加更多功能, 并学会 Kotlin 语言的更多功能, 例如数据类. 我们需要修改 MessageController 类, 来返回 JSON 格式的应答, 其中包含一组序列化的对象.

更新你的应用程序

  1. 在同一个包中, 创建一个 Message.kt 文件, 其中包含一个数据类, 包含 2 个属性: idtext:

    // Message.kt package demo data class Message(val id: String?, val text: String)

    Message 类将被用来传递数据: 一组序列化后的 Message 对象将会组成 JSON 文档, Controller 会对浏览器请求返回这个 JSON 文档.

    数据类 – Message

    Kotlin 中的 数据类 的主要目的是用来保存数据. 这样的类使用 data 关键字进行标记, 而且从类结构能够得到一些标准的功能和有用的函数.

    在上面的示例中, 你将 Message 声明为数据类, 因为它的主要目的是存储数据.

    val 和 var 属性

    Kotlin 类中的属性 可以声明为:

    • 可变属性, 使用 var 关键字

    • 只读属性, 使用 val 关键字

    Message 类使用 val 关键字声明了 2 个属性, idtext. 编译器会为这些属性自动生成 get 函数. 在 Message 类的实例创建之后, 将无法对这些属性重新赋值.

    可为 Null 的类型 – String?

    Kotlin 提供了 对可为 Null 的类型的内建支持. 在 Kotlin 中, 类型系统会区分可以为 null 值的引用 (nullable references) 和不可以为 null 值的引用 (non-nullable references).
    例如, 一个通常的 String 类型变量不能保存 null 值. 要允许使用 null 值, 你可以将一个变量声明为可为 null 的字符串, 写做 String?.

    这里, Message 类的 id 属性声明为可为 null 的类型. 因此, 可以对 id 传递 `null` 来创建一个 Message 类的实例:

    Message(null, "Hello!")
  2. MessageController.kt 文件中, 将 index() 函数改为 listMessages() 函数, 返回 Message 对象的 List:

    // MessageController.kt package demo import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/") class MessageController { @GetMapping fun listMessages() = listOf( Message("1", "Hello!"), Message("2", "Bonjour!"), Message("3", "Privet!"), ) }
    集合 – listOf()

    Kotlin 标准库提供了基本的集合类型的实现: Set, List, 和 Map.
    对每个集合类型都存在一对接口:

    • 一个 只读 接口, 提供了访问集合元素的操作.

    • 一个 可变 接口, 扩展了对应的只读接口, 增加了写操作: 添加, 删除, 以及更新集合的元素.

    Kotlin 标准库还提供了对应的工厂函数, 用来创建这些集合的实例.

    本教程中, 你使用了 listOf() 函数来创建 Message 对象的 List. 这是用来创建对象的 只读 List 的工厂函数: 你不能向 List 添加或删除元素.
    如果需要对 List 执行写操作, 请调用 mutableListOf() 函数来创建一个可变的 List 实例.

    尾随逗号(Trailing Comma)

    尾随逗号(Trailing Comma) 是指在一系列元素的 最终元素 之后的逗号:

    Message("3", "Privet!"),

    这是 Kotlin 语法中的一个便利的功能, 而且它是可选的 – 不使用尾随逗号, 你的代码也能正常运行.

    在上面的示例中, 创建 Message 对象的 List 时, 在 listOf() 函数最后的参数之后包括了尾随逗号.

MessageController 的应答现在是一个 JSON 文档, 其中包含 Message 对象的集合.

下面是 DemoApplication.kt, MessageController.kt, 以及 Message.kt 文件的完整代码:

// DemoApplication.kt package demo import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class DemoApplication fun main(args: Array<String>) { runApplication<DemoApplication>(*args) }
// MessageController.kt package demo import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/") class MessageController { @GetMapping fun listMessages() = listOf( Message("1", "Hello!"), Message("2", "Bonjour!"), Message("3", "Privet!"), ) }
// Message.kt package demo data class Message(val id: String?, val text: String)

运行应用程序

Spring 应用程序已经可以运行了:

  1. 再次运行应用程序.

  2. 应用程序启动后, 打开以下 URL:

    http://localhost:8080

    你将会看到一个页面, 包含 JSON 格式的 message 集合:

    运行应用程序

下一步

本教程的下一部分中, 你将会向你的项目添加并配置一个数据库, 并发送 HTTP 请求.

阅读下一章

最终更新: 2024/12/17