Spec-Zone.ru › Kotlin 1.9

Создание проекта Spring Boot с Kotlin

В первой части учебника показано, как создать проект Spring Boot в IntelliJ IDEA с помощью мастера проектов.

Перед началом

Загрузите и установите последнюю версию IntelliJ IDEA Ultimate Edition.

Создание проекта Spring Boot

Создайте новый проект Spring Boot с Kotlin, используя мастера проектов в IntelliJ IDEA Ultimate Edition:

Вы также можете создать новый проект, используя IntelliJ IDEA с плагином Spring Boot.

  1. В IntelliJ IDEA выберите Файл | Новый | Проект.

  2. В панели слева выберите Новый проект | Spring Initializr.

  3. Укажите следующие поля и опции в окне мастера проектов:

    • Имя: demo

    • Язык: Kotlin

    • Система сборки: Gradle

    • JDK: Java 17 JDK

      В этом учебнике используется Amazon Corretto версия 18.

    • Java: 17

    Create Spring Boot project
  4. Убедитесь, что все поля заполнены, и нажмите Далее.

  5. Выберите следующие зависимости, которые понадобятся для учебника:

    • Веб / Spring Web

    • SQL / Spring Data JDBC

    • SQL / База данных H2

    Set up Spring Boot project
  6. Нажмите Создать, чтобы сгенерировать и настроить проект.

    IDE сгенерирует и откроет новый проект. Это может занять некоторое время для загрузки и импорта зависимостей проекта.

  7. После этого вы можете увидеть следующую структуру в Представлении проекта:

    Set up Spring Boot project

    Сгенерированный проект Gradle соответствует стандартной структуре директорий Maven:

    • В папке main/kotlin находятся пакеты и классы, относящиеся к приложению.

    • Точкой входа в приложение является метод main() файла DemoApplication.kt.

Изучение файла сборки проекта Gradle

Откройте файл build.gradle.kts: это Gradle Kotlin-скрипт сборки, содержащий список зависимостей, необходимых для приложения.

Файл Gradle стандартен для Spring Boot, но также содержит необходимые зависимости Kotlin, включая плагин Gradle kotlin-spring – kotlin("plugin.spring").

Вот полный скрипт с объяснением всех частей и зависимостей:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile // For `KotlinCompile` task below

plugins { 
    id("org.springframework.boot") version "2.7.1"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version "1.9.0" // The version of Kotlin to use
    kotlin("plugin.spring") version "1.9.0" // The Kotlin Spring plugin
}

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

repositories {
    mavenCentral()
}

dependencies { 
    implementation("org.springframework.boot:spring-boot-starter-data-jdbc") 
    implementation("org.springframework.boot:spring-boot-starter-web") 
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin") // Jackson extensions for Kotlin for working with JSON
    implementation("org.jetbrains.kotlin:kotlin-reflect") // Kotlin reflection library, required for working with Spring
    runtimeOnly("com.h2database:h2") 
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.withType<KotlinCompile> { // Settings for `KotlinCompile` tasks
    kotlinOptions { // Kotlin compiler options
        freeCompilerArgs = listOf("-Xjsr305=strict") // `-Xjsr305=strict` enables the strict mode for JSR-305 annotations
        jvmTarget = "17" // This option specifies the target version of the generated JVM bytecode
    }
}

tasks.withType<Test> { 
    useJUnitPlatform()
}

Как видите, в файл Gradle сборки добавлены несколько артефактов, связанных с Kotlin:

  1. В блоке plugins есть два артефакта Kotlin:

    • kotlin("jvm") – плагин определяет версию Kotlin, которая будет использоваться в проекте

    • kotlin("plugin.spring") – плагин Kotlin Spring компилятора для добавления модификатора open к классам Kotlin, чтобы сделать их совместимыми с функциями Spring Framework

  2. В блоке dependencies перечислены несколько модулей Kotlin:

    • com.fasterxml.jackson.module:jackson-module-kotlin – модуль добавляет поддержку сериализации и десериализации классов и данных классов Kotlin

    • org.jetbrains.kotlin:kotlin-reflect – библиотека рефлексии Kotlin

  3. После раздела зависимостей вы можете увидеть блок конфигурации задачи KotlinCompile. Здесь вы можете добавить дополнительные аргументы к компилятору для включения или отключения различных языковых функций.

Изучение сгенерированного приложения Spring Boot

Откройте файл 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)
}
Объявление классов – класс DemoApplication

Сразу после объявления пакета и операторов импорта вы можете увидеть первое объявление класса, class DemoApplication.

В Kotlin, если класс не содержит членов (свойств или функций), вы можете опустить тело класса ({}) для удобства.

@SpringBootApplication аннотация

@SpringBootApplication annotation — это удобная аннотация в приложении Spring Boot. Она включает автоматическую настройку Spring Boot, автонастройку, сканирование компонентов и позволяет определять дополнительную конфигурацию в "классе приложения".

Точка входа программы – main()

Функция main() — это точка входа в приложение.

Она объявлена как функция верхнего уровня вне класса DemoApplication. Функция main() вызывает функцию Spring runApplication(*args) для запуска приложения с использованием Spring Framework.

Аргументы переменной длины – args: Array<String>

Если проверить объявление функции runApplication(), вы увидите, что параметр функции помечен модификатором vararg: vararg args: String. Это означает, что вы можете передавать переменное количество строковых аргументов в функцию.

Оператор распространения – (*args)

args — это параметр функции main() , объявленный как массив строк. Поскольку у вас есть массив строк, и вы хотите передать его содержимое в функцию, используйте оператор распространения (предшествуйте массиву звездочкой *).

END_OF_DOCUMENT_MARKER

Создание контроллера

Приложение готово к запуску, но давайте сначала обновим его логику.

В приложении Spring контроллер используется для обработки веб-запросов. В файле DemoApplication.kt создайте класс MessageController следующим образом:

@RestController
class MessageController {
    @GetMapping("/")
    fun index(@RequestParam("name") name: String) = "Hello, $name!"
}
Аннотация @RestController

Вам нужно сообщить Spring, что MessageController является контроллером REST, поэтому вы должны пометить его аннотацией @RestController.

Эта аннотация означает, что этот класс будет обнаружен сканером компонентов, так как он находится в том же пакете, что и наш класс DemoApplication.

Аннотация @GetMapping

@GetMapping помечает функции контроллера REST, реализующие конечные точки, соответствующие вызовам HTTP GET:

@GetMapping("/")
fun index(@RequestParam("name") name: String) = "Hello, $name!"
Аннотация @RequestParam

Параметр функции name помечен аннотацией @RequestParam. Эта аннотация указывает, что параметр метода должен быть привязан к параметру веб-запроса.

Следовательно, если вы обратитесь к приложению в корневой точке и предоставите параметр запроса с именем «name», как /?name=<your-value>, значение параметра будет использовано в качестве аргумента для вызова функции index().

Функции с одним выражением – index()

Поскольку функция index() содержит только одно утверждение, вы можете объявить её как функцию с одним выражением.

Это означает, что фигурные скобки можно опустить, а тело указано после знака равенства =.

Выведение типа для типов возврата функций

Функция index() не объявляет тип возврата явно. Вместо этого компилятор выводит тип возврата, посмотрев на результат утверждения справа от знака равенства =.

Тип выражения Hello, $name! равен String, следовательно, тип возврата функции также равен String.

Шаблоны строк – $name

Выражение Hello, $name! называется шаблоном строки в Kotlin.

Шаблоны строк — это строковые литералы, содержащие встроенные выражения.

Это удобная замена операциям конкатенации строк.

Для этих аннотаций Spring также требуются дополнительные импорты:

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

Вот полный код DemoApplication.kt.

package demo import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @SpringBootApplication class DemoApplication fun main(args: Array) { runApplication(*args) } @RestController class MessageController { @GetMapping("/") fun index(@RequestParam("name") name: String) = "Hello, $name!" }

Запуск приложения

Приложение Spring теперь готово к запуску:

  1. Нажмите зелёную иконку «Запуск» в метке рядом с методом main():

    Run Spring Boot application

    Вы также можете выполнить команду ./gradlew bootRun в терминале.

    Это запустит локальный сервер на вашем компьютере.

  2. После запуска приложения откройте следующий URL:

    http://localhost:8080?name=John
    

    Вы должны увидеть «Hello, John!» в качестве ответа:

    Spring Application response

Следующий шаг

В следующей части руководства вы узнаете о классах данных Kotlin и о том, как вы можете использовать их в своем приложении.

Перейти к следующей главе

Получите карту языка Kotlin

Получите вашу персональную карту языка, чтобы помочь вам в навигации по функциям Kotlin и отслеживании вашего прогресса в изучении языка. Мы также будем отправлять вам советы по языку и полезные материалы по использованию Kotlin с Spring.

Get the Kotlin language map

Для получения материалов вам потребуется указать адрес вашей электронной почты на следующей странице.

Последнее изменение: 10 июля 2023 г.
Начало работы с Spring Boot и Kotlin Добавление класса данных в проект Spring Boot

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/jvm-create-project-with-spring-boot.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API