Spec-Zone.ru › Kotlin 2

Добавление класса данных в проект Spring Boot

В этой части руководства вы добавите в приложение новые функции и познакомитесь с дополнительными возможностями языка Kotlin, например с классами данных. Для этого нужно изменить класс MessageController, чтобы он возвращал документ JSON с коллекцией сериализованных объектов.

Обновление приложения

  1. В том же пакете, рядом с файлом DemoApplication.kt, создайте файл Message.kt.

  2. В файле Message.kt создайте класс данных с двумя свойствами: id и text:

    // Message.kt
    package com.example.demo
    
    data class Message(val id: String?, val text: String)
    

    Класс Message будет использоваться для передачи данных: список сериализованных объектов Message составит документ JSON, который контроллер вернёт в ответ на запрос браузера.

    Классы данных — класс данных Message

    Основное назначение классов данных в Kotlin — хранение данных. Такие классы помечаются ключевым словом data, а стандартные и вспомогательные функции часто можно автоматически вывести из структуры класса.

    В этом примере вы объявили Message классом данных, поскольку его основное назначение — хранение данных.

    Свойства val и var

    Свойства в классах Kotlin можно объявлять как:

    • изменяемые — с помощью ключевого слова var

    • только для чтения — с помощью ключевого слова val

    Класс Message объявляет два свойства с помощью ключевого слова val: id и text. Компилятор автоматически сгенерирует геттеры для обоих свойств. После создания экземпляра класса Message присвоить этим свойствам новые значения будет невозможно.

    Типы, допускающие значение null — String?

    В Kotlin предусмотрена встроенная поддержка типов, допускающих значение null. Система типов Kotlin различает ссылки, которым можно присвоить null (ссылки, допускающие значение null), и те, которым нельзя (ссылки, не допускающие значение null).
    Например, обычная переменная типа String не может содержать null. Чтобы разрешить null-значения, можно объявить переменную как строку, допускающую значение null, указав String?.

    На этот раз свойство id класса Message объявлено как тип, допускающий значение null. Поэтому можно создать экземпляр класса Message, передав null в качестве значения для id:

           Message(null, "Hello!")
           
  3. В файле MessageController.kt вместо функции index() создайте функцию listMessages(), возвращающую список объектов Message:

    // MessageController.kt
    package com.example.demo
    
    import org.springframework.web.bind.annotation.GetMapping
    import org.springframework.web.bind.annotation.RequestMapping
    import org.springframework.web.bind.annotation.RestController
    
    @RestController
    @RequestMapping("/")
    class MessageController {
        @GetMapping
        fun listMessages() = listOf(
            Message("1", "Hello!"),
            Message("2", "Bonjour!"),
            Message("3", "Privet!"),
        )
    }
    
    Коллекции — listOf()

    Стандартная библиотека Kotlin предоставляет реализации основных типов коллекций: множеств, списков и отображений.
    Каждый тип коллекции может быть доступным только для чтения или изменяемым:

    • Коллекция, доступная только для чтения, предоставляет операции для доступа к элементам.

    • Изменяемая коллекция также предоставляет операции записи для добавления, удаления и обновления элементов.

    Стандартная библиотека Kotlin также предоставляет соответствующие фабричные функции для создания экземпляров таких коллекций.

    В этом руководстве вы используете функцию listOf(), чтобы создать список объектов Message. Эта фабричная функция создаёт доступный только для чтения список объектов: добавлять в него элементы и удалять их нельзя.
    Если необходимо выполнять операции записи со списком, вызовите функцию mutableListOf(), чтобы создать экземпляр изменяемого списка.

    Запятая в конце

    Запятая в конце — это запятая после последнего элемента последовательности элементов:

             Message("3", "Privet!"),
             

    Это удобная возможность синтаксиса Kotlin, но она необязательна — код будет работать и без таких запятых.

    В приведённом выше примере при создании списка объектов Message после последнего аргумента функции listOf() стоит запятая.

Теперь ответ MessageController будет представлять собой документ JSON с коллекцией объектов Message.

Любой контроллер приложения Spring по умолчанию возвращает ответ JSON, если в classpath есть библиотека Jackson. Поскольку вы указали зависимость spring-boot-starter-webmvc в файле build.gradle.kts, библиотека Jackson была добавлена как транзитивная зависимость. Поэтому приложение отвечает документом JSON, если конечная точка возвращает структуру данных, которую можно сериализовать в JSON.

Вот полный код файлов DemoApplication.kt, MessageController.kt и Message.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) }
// MessageController.kt package com.example.demo import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/") class MessageController { @GetMapping fun listMessages() = listOf( Message("1", "Hello!"), Message("2", "Bonjour!"), Message("3", "Privet!"), ) }
// Message.kt package com.example.demo data class Message(val id: String?, val text: String)

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

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

  1. Запустите приложение ещё раз.

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

    http://localhost:8080
    

    Вы увидите страницу с коллекцией сообщений в формате JSON:

    Run the application

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

В следующей части руководства вы добавите в проект базу данных, настроите её и выполните HTTP-запросы.

  • Предыдущий шаг

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

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-spring-boot-add-data-class.html

Spec-Zone.ru

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