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.
Читайте также:
- Spring Boot: поддержка Kotlin, требования, null безопасность
- Spring Boot: создание собственной автоконфигурации, аннотации условий
- Spring Boot: создание собственной автоконфигурации, тестирование собственной автоконфигурации
Комментарии
Отправить комментарий