Создание проекта Spring Boot на Kotlin
В первой части руководства показано, как создать проект Spring Boot с Gradle в IntelliJ IDEA с помощью мастера проектов.
Перед началом
Скачайте и установите последнюю версию IntelliJ IDEA и используйте подписку Ultimate.
Создание проекта Spring Boot
Создайте проект Spring Boot на Kotlin с помощью мастера проектов в IntelliJ IDEA:
В IntelliJ IDEA выберите Файл | Создать | Проект.
На панели слева выберите Spring Boot в разделе Генераторы.
-
Укажите следующие поля и параметры в окне Новый проект:
Имя: demo
Язык: Kotlin
-
Тип: Gradle — Kotlin
Имя пакета: com.example.demo
-
JDK: Java JDK
-
Java: 17

Убедитесь, что указали все поля, и нажмите Далее.
-
Выберите следующие зависимости, необходимые для выполнения руководства:
Web | Spring Web
SQL | Spring Data JDBC
SQL | H2 Database

-
Нажмите Создать, чтобы создать и настроить проект.
-
После этого в представлении «Проект» будет видна следующая структура:

Созданный проект 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:
-
В блоке
pluginsуказаны два артефакта Kotlin:Плагин
kotlin("jvm")задает версию Kotlin, используемую в проекте.Плагин компилятора Kotlin Spring,
kotlin("plugin.spring"), добавляет модификаторopenк классам Kotlin, чтобы обеспечить их совместимость с возможностями Spring Framework.
-
В блоке
dependenciesперечислено несколько модулей, связанных с Kotlin:Модуль
tools.jackson.module:jackson-module-kotlinдобавляет поддержку сериализации и десериализации классов Kotlin и классов данных.org.jetbrains.kotlin:kotlin-reflect— это библиотека рефлексии Kotlin, обеспечивающая полноценную поддержку возможностей рефлексии.
После раздела зависимостей вы увидите блок конфигурации плагина
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 готово к запуску:
-
В файле
DemoApplication.ktнажмите зеленый значок Запустить на поле рядом с методомmain():
Это запустит локальный сервер на вашем компьютере.
-
После запуска приложения откройте следующий URL-адрес:
http://localhost:8080?name=John
В ответе должно появиться сообщение "Hello, John!":
Следующий шаг
В следующей части руководства вы узнаете о классах данных Kotlin и о том, как использовать их в приложении.
© 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