Kotlin
Spring框架为Kotlin提供了顶级的支持,让开发者能够几乎像使用原生Kotlin框架一样编写Kotlin应用程序。参考文档中的大多数代码示例都同时提供了Kotlin和Java版本。
使用Kotlin构建Spring应用程序最简单的方法是利用Spring Boot及其专门的Kotlin支持。这个全面的教程将教你如何使用start.spring.io来用Kotlin构建Spring Boot应用程序。
如需支持,欢迎加入Kotlin Slack的#spring频道,或在Stackoverflow上以spring和kotlin为标签提问。
部分摘要
📄️ 要求;需求;必要条件
Spring Framework 支持 Kotlin 2.2 及更高版本,并要求类路径(classpath)中包含 kotlin-stdlib 和 kotlin-reflect 这两个依赖。如果你在 start.spring.io 上创建一个 Kotlin 项目,这些依赖会默认被包含在内。
📄️ 扩展名
Kotlin扩展提供了通过附加功能来扩展现有类的能力。Spring Framework的Kotlin API利用这些扩展,为现有的Spring API添加了新的、特定于Kotlin的便捷特性。
📄️ 空值安全(Null-safety)
Kotlin 的一个关键特性是空值安全性(null-safety),它在编译时就能妥善处理空值,而不会在运行时遇到著名的 NullPointerException。通过空值可能性声明(nullability declarations)以及表达“有值或无值”的语义,这种特性让应用程序更加安全,同时无需使用诸如 Optional 这样的包装器(wrappers)。Kotlin 允许对可为空值(nullable values)使用函数式构造(functional constructs)。请参阅这份关于 Kotlin 空值安全性的全面指南。
📄️ 类和接口
Spring框架支持多种Kotlin语法特性,例如通过主构造函数实例化Kotlin类、不可变类的数据绑定,以及带有默认值的函数可选参数。
📄️ 注释
Spring框架还利用Kotlin的null安全性来判断某个HTTP参数是否为必需,而无需显式定义“required”属性。也就是说,@RequestParam name: String? 被视为非必需参数;相反,@RequestParam name: String 则被视为必需参数。这一特性在Spring Messaging的@Header注解中也得到了支持。
📄️ Bean注册DSL
请参阅“程序化Bean注册”。
📄️ 网络;网页
Spring框架提供了Kotlin路由器DSL(Router DSL),共有3种版本可供选择:
📄️ 协程
Kotlin协程(Kotlin Coroutines)是Kotlin中的轻量级线程,允许以命令式的方式编写非阻塞代码。在语言层面,暂停函数(suspending functions)为异步操作提供了抽象;而在库层面,kotlinx.coroutines提供了诸如async { }这样的函数以及Flow这样的数据类型。
📄️ Kotlin 中的 Spring 项目
本节提供了一些在Kotlin中开发Spring项目时值得参考的具体提示和建议。
📄️ 开始使用
学习如何使用Kotlin构建Spring应用程序的最简单方法是跟随专门的教程进行学习。
📄️ 资源
我们为学习如何使用Kotlin和Spring框架构建应用程序的人推荐以下资源: