我尝试了入门Gradle + Kotlin + Spring

由于经常听到Kotlin非常好的评价,所以我首先创建了一个运行环境,以便于尝试Kotlin的开发。以下是在Spring和Gradle下创建运行环境时的备忘录。

这次的目标

试着创建一个简单的API,仅返回字符串的GET请求。

制作原型

首先,我们要创建项目的草图。我们可以使用SpringInitializer快速地创建它。

请查看下方图片以查看设置。

screenshot-start.spring.io-2020.03.21-22_17_27.png

在生成的项目中,主文件已经以Kotlin状态创建。

package com.example.demo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class DemoApplication

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}


进行Gradle设置。

在项目的根目录下直接创建一个名为gradle.build.kts的文件,这将作为gradle的配置文件。
根据文件名可以看出,我们将使用kotlin来编写gradle的配置。

最初阶段API功能尚未提供,因此我们将提供一个包来使用它。另外,我们也会添加一个连接器,以便稍后连接到数据库。

所以将其添加到依赖项中。

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import sun.security.pkcs.PKCS8Key.version

plugins {
    id("org.springframework.boot") version "2.2.5.RELEASE"
    id("io.spring.dependency-management") version "1.0.9.RELEASE"
    kotlin("jvm") version "1.3.61"
    kotlin("plugin.spring") version "1.3.61"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-jooq")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("mysql:mysql-connector-java") // 追加
    implementation("org.springframework.boot:spring-boot-starter-web") // 追加

    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "1.8"
    }
}

顺便配置数据库。在src/main/resources/application.properties文件中追加以下内容。


spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=root

创建API。

现在建筑周围的准备工作已经完成,接下来我将编写Kotlin代码。
我要创建一个简单的API,它将返回一个简单的字符串,代码如下所示。


package com.example.demo.presentation.controller

import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController {

    @RequestMapping(value = ["/hello"],method = [RequestMethod.GET])
    fun helloRouter(): String {
        return "hello";
    }
}

我实际写下来并思考后认为,只能通过数组形式接收RequestMapping的value和method。

试试看

进入项目的根目录,执行以下命令。

./gradlew bootRun

这样的话,服务器将会一直保持运行状态,
如果成功的话,


<==========---> 80% EXECUTING [7m 23s]
> IDLE
> :compileKotlin > Resolve files of :compileClasspath > jackson-datatype-jdk8-2.10.2.jar
> IDLE
> IDLE
> :bootRun
> IDLE

请访问下方链接,如果出现“hello”字样则表示成功。
http://localhost:8080/hello

这样就可以停止了。

最后

环境搭建和简单的API都有些改变,Gradle变成了Kotlin,注解的参数类型也有所不同,感觉有些变化。我想要逐渐学习并前进。

广告
将在 10 秒后关闭
bannerAds