使用 Kotlin 创建一个 Spring Boot 项目
教程的第一部分向您展示如何使用项目向导在 IntelliJ IDEA 中创建一个 Spring Boot 项目。
开始之前
下载并安装最新版本的IntelliJ IDEA Ultimate Edition。
创建一个 Spring Boot 项目
通过 IntelliJ IDEA Ultimate Edition 中的项目向导使用 Kotlin 创建一个新的 Spring Boot 项目:
在 IntelliJ IDEA 中,选择 File | New | Project。
在左侧面板中,选择 New Project | Spring Boot。
在项目向导窗口中,指定以下字段和选项:
Name: demo
Language: Kotlin
Type: Gradle - Kotlin
Package name: demo
JDK: Java JDK
Java: 17
确保已填写所有字段,然后单击 Next。
选择本教程所需的以下依赖项:
Web | Spring Web
SQL | Spring Data JDBC
SQL | H2 Database
单击 Create 以生成并设置项目。
完成后,您可以在 Project view 中观察到以下结构:
生成的 Gradle 项目符合 Maven 的标准目录布局:
应用程序的包和类位于
main/kotlin
文件夹下。应用程序的入口点是
DemoApplication.kt
文件中的main()
方法。
探索项目的 Gradle 构建文件
打开 build.gradle.kts
文件:这是 Gradle 的 Kotlin 构建脚本,包含应用程序所需依赖项的列表。
Gradle 文件是 Spring Boot 的标准配置,但它还包含必要的 Kotlin 依赖项,包括 Kotlin-Spring Gradle 插件——kotlin("plugin.spring")
。
以下是完整的脚本,并对其各部分及依赖项进行了解释:
如您所见,Gradle 构建文件中添加了几个与 Kotlin 相关的构件:
在
plugins
块中,有两个 Kotlin 插件:kotlin("jvm")
– 该插件定义了项目中使用的 Kotlin 版本kotlin("plugin.spring")
– Kotlin Spring 编译插件,用于将open
修饰符添加到 Kotlin 类,以使其与 Spring 框架功能兼容
在
dependencies
块中,列出了几个与 Kotlin 相关的模块:com.fasterxml.jackson.module:jackson-module-kotlin
– 该模块为 Kotlin 类和数据类的序列化与反序列化提供支持org.jetbrains.kotlin:kotlin-reflect
– Kotlin 反射库
在依赖项部分之后,您可以看到
kotlin
插件配置块。
在这里,您可以添加额外的参数给编译器,以启用或禁用各种语言特性。
探索生成的 Spring Boot 应用程序
打开 DemoApplication.kt
文件:
- 声明类 – class DemoApplication
在包声明和导入语句之后,您可以看到第一个类声明,
class DemoApplication
。在 Kotlin 中,如果一个类没有任何成员(属性或函数),您可以省略类体(
{}
)。- @SpringBootApplication 注解
@SpringBootApplication
注解 是 Spring Boot 应用程序中的便捷注解。 它启用 Spring Boot 的 自动配置、 组件扫描 ,并能够在“应用程序类”中定义额外的配置。- 程序入口点 – main()
main()
函数是程序的入口点。它被声明为 顶级函数 ,在
DemoApplication
类之外。main()
函数调用 Spring 的runApplication(*args)
函数,以便使用 Spring 框架启动应用程序。- 可变参数 – args: Array<String>
如果查看
runApplication()
函数的声明,您会看到该函数的参数被标记为vararg
修饰符:vararg args: String
。这意味着您可以将任意数量的 String 类型参数传递给该函数。- 展开操作符 – (*args)
args
是传递给main()
函数的参数,声明为一个字符串数组。由于它是一个字符串数组,并且您希望将其内容传递给函数,因此使用展开操作符(在数组前面加上星号*
)。
创建 Controller
应用程序已准备好运行,但首先让我们更新其逻辑。
在 Spring 应用中,控制器用于处理 Web 请求。
在与 DemoApplication.kt
文件相同的包中,创建 MessageController.kt
文件,并定义 MessageController
类,如下所示:
- @RestController 注解
您需要告诉 Spring
MessageController
是一个 REST Controller,因此应使用@RestController
注解标记它。这个注解意味着该类将被组件扫描识别,因为它与我们的
DemoApplication
类在同一个包中。- @GetMapping 注解
@GetMapping
标记 REST Controller的函数,这些函数实现对应 HTTP GET 请求的端点:@GetMapping("/") fun index(@RequestParam("name") name: String) = "Hello, $name!"- @RequestParam 注解
函数参数
name
被@RequestParam
注解标记。这个注解表示方法参数应该绑定到 Web 请求的参数。因此,如果您在根路径访问应用程序并提供一个名为 "name" 的请求参数,如
/?name=<your-value>
,参数的值将作为参数传递给index()
函数。- 单表达式函数 – index()
由于
index()
函数只包含一个语句,您可以将其声明为 单表达式函数。这意味着花括号可以省略,函数体通过等号
=
后面的语句来指定。- 函数返回类型的类型推断
index()
函数没有显式声明返回类型。相反,编译器通过查看等号=
右边的语句结果来推断返回类型。Hello, $name!
表达式的类型是String
,因此函数的返回类型也是String
。- 字符串模板 – $name
Hello, $name!
表达式在 Kotlin 中称为 字符串模板。字符串模板是包含嵌入式表达式的字符串字面量。
这是一种便捷的替代字符串连接操作的方式。
运行应用程序
Spring 应用程序现在已经准备好运行:
点击
main()
方法旁边的绿色运行图标:这将在您的计算机上启动本地服务器。
一旦应用程序启动,打开以下 URL:
http://localhost:8080?name=John您应该看到响应为 "Hello, John!":
下一步
在接下来的教程部分,您将学习 Kotlin 数据类以及如何在您的应用程序中使用它们。