Spec-Zone.ru › Kotlin 2

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

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

Для выполнения этого руководства не обязательно использовать Gradle в качестве системы сборки. Если вы используете Maven, можно выполнить те же действия.

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

Скачайте и установите последнюю версию IntelliJ IDEA и используйте подписку Ultimate.

Если вы используете IntelliJ IDEA без подписки Ultimate или другую IDE, можно создать проект Spring Boot с помощью веб-генератора проектов.

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

Создайте проект Spring Boot на Kotlin с помощью мастера проектов в IntelliJ IDEA:

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

  2. На панели слева выберите Spring Boot в разделе Генераторы.

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

    • Имя: demo

    • Язык: Kotlin

    • Тип: Gradle — Kotlin

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

    • Имя пакета: com.example.demo

    • JDK: Java JDK

      В этом руководстве используется Amazon Corretto версии 23. Если JDK не установлен, его можно скачать из раскрывающегося списка.

    • Java: 17

      Если Java 17 не установлена, ее можно скачать из раскрывающегося списка JDK.

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

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

    • Web | Spring Web

    • SQL | Spring Data JDBC

    • SQL | H2 Database

    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").

Ниже приведен полный скрипт с пояснением всех его частей и зависимостей:

// build.gradle.kts
plugins {
    kotlin("jvm") version "2.3.21" // The version of Kotlin to use
    kotlin("plugin.spring") version "2.3.21" // The Kotlin Spring plugin
    id("org.springframework.boot") version "4.1.1"
    id("io.spring.dependency-management") version "1.1.7"
}

group = "com.example"
version = "0.0.1-SNAPSHOT"

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

repositories {
    mavenCentral()
}

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

kotlin {
    compilerOptions {
        freeCompilerArgs.addAll("-Xjsr305=strict", "-Xannotation-default-target=param-property") // `-Xjsr305=strict` enables the strict mode for JSR-305 annotations
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

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

  1. В блоке plugins указаны два артефакта Kotlin:

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

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

  2. В блоке dependencies перечислено несколько модулей, связанных с Kotlin:

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

    • org.jetbrains.kotlin:kotlin-reflect — это библиотека рефлексии Kotlin, обеспечивающая полноценную поддержку возможностей рефлексии.

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

Подробнее о параметрах компилятора Kotlin см. в разделе Параметры компилятора в плагине Kotlin Gradle.

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

Откройте файл DemoApplication.kt:

// DemoApplication.kt
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)
}
Объявление классов — class DemoApplication

Сразу после объявления пакета и операторов импорта находится первое объявление класса — class DemoApplication.

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

Аннотация @SpringBootApplication

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

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

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

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

Переменное число аргументов — args: Array<String>

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

Оператор spread — (*args)

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

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

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

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

// MessageController.kt
package com.example.demo

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

@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 готово к запуску:

  1. В файле DemoApplication.kt нажмите зеленый значок Запустить на поле рядом с методом main():

    Run Spring Boot application

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

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

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

    http://localhost:8080?name=John
    

    В ответе должно появиться сообщение "Hello, John!":

    Spring Application response

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

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

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

1 сентября 2026
Начало работы со Spring Boot и KotlinДобавление класса данных в проект Spring Boot

© 2010–2026 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