Spec-Zone.ru › Kotlin 1.9

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

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

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

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

    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!")
    
  2. В том же файле измените функцию index() класса MessageController так, чтобы она возвращала список объектов Message:

    @RestController
    class MessageController {
        @GetMapping("/")
        fun index() = 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-ответ, если библиотека Jackson находится в классе. Поскольку вы указали зависимость spring-boot-starter-web в файле build.gradle.kts, вы получили Jackson как транзитивную зависимость. Таким образом, приложение отвечает JSON-документом, если конечная точка возвращает структуру данных, которая может быть сериализована в JSON.

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

package demo import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.data.annotation.Id import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @SpringBootApplication class DemoApplication fun main(args: Array<String>) { runApplication<DemoApplication>(*args) } @RestController class MessageController { @GetMapping("/") fun index() = listOf( Message("1", "Hello!"), Message("2", "Bonjour!"), Message("3", "Приветик!"), ) } data class Message(val id: String?, val text: String)

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

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

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

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

    http://localhost:8080
    

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

    Run the application

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

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

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

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

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

Get the Kotlin language map

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

Последнее изменение: 22 февраля 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-spring-boot-add-data-class.html

Spec-Zone.ru

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