关于 Kotlin

入门的东西,官网教的还是比较好、比较全的:

基础

同大多数编程语言一样,Kotlin 的程序入口也是 main() 函数。在 Kotlin 中,使用 val 声明不能修改的变量,var 声明可以修改的变量。

Kotlin 的类继承使用 : 声明,并且类默认是 final 的;想要该类被继承,使用 open 声明类:

1
2
3
4
5
open class Shape

class Rectangle(val height: Double, val length: Double): Shape() {
val perimeter = (height + length) * 2
}

vararg 类型的参数就像 Java String... 方式的参数类型,规则也是一样的:只能是参数列表的最后一个参数且参数列表只能有一个此种类型的参数

如果是 Array 类型,那么调用时需要如下形式使用,使用 *

1
2
3
4
5
6
7
8
fun callPr() {
val ints = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
pr(*ints)
}

fun pr(vararg intArr: Int) {
intArr.forEach { print(it) }
}

注入方式

使用哪种注入方式需要看使用的框架,以 Spring 为例,官网文档推荐使用构造注入(以下三种方式均可)。之所以有三种写法是因为,在 Kotlin 中,如果构造函数具有注释或可见性修饰符,constructor 关键字是必需的,并且修饰符位于关键字前面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 第一种,推荐
@RestController
class WebController(val sqlClient: KSqlClient) {
code
}
// 第二种,省略 框架 注解
@RestController
class WebController constructor (val sqlClient: KSqlClient) {
code
}
// 第三种,旧版写法,适用于 Spring 4.3 版本之前
@RestController
class WebController @Autowired constructor (val sqlClient: KSqlClient) {
code
}

// 或者 Javaer 经常使用的,不推荐
// @Autowired
// private JSqlClient sqlClient;
//
@RestController
class WebController {

@Autowired
lateinit var sqlClient: KSqlClient

code
}

参考

Ktor

Ktor 本质上是异步和非阻塞的。它允许应用程序同时处理多个请求,使其成为高流量应用程序的完美选择。这是通过利用 Kotlin 的协程来实现的,它简化了异步代码的编写,使其更具可读性和可维护性。此外,标准阻塞应用程序还允许同时处理多个请求,但是,它们不如非阻塞应用程序高效。它仅提供 Web 开发的基本要素,允许开发人员根据需要添加组件。这种极简主义方法可以缩短启动时间、降低资源消耗,并更好地控制应用程序的体系结构。

Ktor 遵循 Application 、 Routing 和 Call 的概念,使其成为构建 RESTful Web 服务的自然选择。

  • Application:应用程序是 Ktor 应用程序中的顶级组件。它负责管理应用程序的整个生命周期,包括启动和停止服务器。一个应用程序可以有多个模块和插件,用于定义应用程序行为的不同部分。
  • Routing:路由是任何 Web 框架的关键方面,而 Ktor 可以优雅地处理它。路由定义如何处理 HTTP 请求以及应为特定终结点执行哪些代码。开发人员可以创建与 HTTP 方法和 URL 模式匹配的复杂路由结构,从而轻松定义应用程序的行为。
  • Call:表示单个 HTTP 请求和响应。它包含有关请求的所有必要信息,例如标头、参数和请求正文。

CIO 是 Coroutine-based I/O 的缩写。通常,我们将其称为使用 Kotlin 和 Coroutines 实现 IETF RFC 或其他协议逻辑的引擎,而无需依赖基于 JVM 的外部库。CIO 是 Ktor 的 Engine 之一,跨平台,推荐使用。

不同的 Engine 支持不同的平台,可以参阅 官方文档

K2

https://blog.jetbrains.com/zh-hans/kotlin/2023/02/k2-kotlin-2-0/


本站由 江湖浪子 使用 Stellar 1.28.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。