Spring Boot: Kotlin API, расширения, тестирование

Kotlin API: runApplication

Spring Boot предоставляет идиоматический способ запуска приложения с помощью runApplication<MyApplication>(*args), как показано в следующем примере:

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
class MyApplication

fun main(args: Array<String>) {
    runApplication<MyApplication>(*args)
}

Это замена для SpringApplication.run(MyApplication::class.java, *args). Это также позволяет настраивать приложение, как показано в следующем примере:

runApplication<MyApplication>(*args) {
    setBannerMode(OFF)
}

Kotlin API: расширения

Расширения Kotlin предоставляют возможность расширять существующие классы дополнительными функциями. Spring Boot Kotlin API использует эти расширения для добавления новых специфичных для Kotlin удобств в существующие API.

Предусмотрены расширения TestRestTemplate, аналогичные тем, которые предоставляются Spring Framework для RestOperations в Spring Framework. Помимо всего прочего, расширения позволяют использовать параметры усовершенствованного типа Kotlin.

Управление зависимостями

Чтобы избежать смешивания различных версий зависимостей Kotlin в пути к классам, Spring Boot импортирует спецификацию Kotlin.

В Maven версию Kotlin можно настроить с помощью свойства kotlin.version, а для kotlin-maven-plugin предусмотрено управление плагином. С Gradle плагин Spring Boot автоматически выравнивает kotlin.version с версией плагина Kotlin.

Spring Boot также управляет версией зависимостей Coroutines путем импорта спецификации Kotlin Coroutines. Версию можно настроить с помощью свойства kotlin-coroutines.version.

org.jetbrains.kotlinx:kotlinx-coroutines-reactor зависимость предоставляется по умолчанию, если кто-то запускает проект Kotlin с хотя бы одной реактивной зависимостью от start.spring.io.

@ConfigurationProperties

@ConfigurationProperties при использовании в сочетании с @ConstructorBinding поддерживает классы с неизменяемыми свойствами val, как показано в следующем примере:

@ConstructorBinding
@ConfigurationProperties("example.kotlin")
data class KotlinExampleProperties(
        val name: String,
        val description: String,
        val myService: MyService) {

    data class MyService(
            val apiToken: String,
            val uri: URI
    )
}

Чтобы сгенерировать свои собственные метаданные с помощью процессора аннотаций, kapt должен быть настроен с зависимостью spring-boot-configuration-processor. Обратите внимание, что некоторые функции (например, определение значения по умолчанию или устаревших элементов) не работают из-за ограничений в предоставляемой модели kapt.

Тестирование

Хотя для тестирования кода Kotlin можно использовать JUnit 4, JUnit 5 предоставляется по умолчанию и рекомендуется. JUnit 5 позволяет создать экземпляр класса теста один раз и повторно использовать его для всех тестов класса. Это позволяет использовать аннотации @BeforeClass и @AfterClass в нестатических методах, что хорошо подходит для Kotlin.

JUnit 5 используется по умолчанию, а старый движок предназначен для обратной совместимости с JUnit 4. Если вы его не используете, исключите org.junit.vintange:junit-vintage-engine. Вам также необходимо переключить жизненный цикл тестового экземпляра на "per-class".

Чтобы мокировать классы Kotlin, рекомендуется MockK. Если вам нужен эквивалент Mockk для конкретных аннотаций @MockBean и @SpyBean, вы можете использовать SpringMockK, который предоставляет аналогичные аннотации @MockkBean и @SpykBean.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки