ПОЧЕМУ.
Я хотел создать REST API на Kotlin x Spring с чистой архитектурой и написать тесты.
https://qiita.com/kawasaki_dev/items/1a188878eb6928880256
Мы будем использовать это в качестве справочника.
Цель.
- Подключен к БД postgres
- Все функции имеют Unit-тесты и написаны EndtoEnd-тесты
Оглавление
- Создание приложения Kotlin Springboot на сайте Spring Initializer, открытие и запуск его в IntelliJ
- Использование контроллера и Getmapping для передачи данных в Tymleaf Template Html, чтобы он мог отображаться в Интернете
- Создайте Driver Usecase с объектом-компаньоном и вызовите его в Main через Usecase.
- Переименуйте Controller в Resource и вызовите Usecase как Rest.
- Создайте домен и используйте драйвер для упаковки данных в домен и их возврата.
- Прекратите использовать объект-компаньон и создайте экземпляры класса, и вызывайте каждый слой из каждого экземпляра.
- Создайте сущность в Driver и заполните ее доменом в Gateway.
- Создайте расширение для подготовки к преобразованию домена в JSON в Rest, а также для преобразования его в JSON в gson и вывода его.
- (По расписанию) Сделайте создание экземпляра автоматическим с помощью функции Component.
- (Запланировано) Создайте функцию для фильтрации по возрасту в Domain и запустите ее в Usecase.
- (Планируется) Соедините Usecase и шлюз с помощью интерфейса под названием Port.
Создание приложений в Интернете с помощью Spring Initializer
https://start.spring.io/
Похоже, что на этом сайте можно сделать шаблон.
https://qiita.com/kawasaki_dev/items/1a188878eb6928880256#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E9%9B%9B%E5%BD%A2%E3%82%92%E4%BD%9C%E6%88%90
Согласно статье
Используйте имя артефакта springboot
Установите язык на Kotlin.
Строитель проекта? Выберите Groovey в качестве конструктора проектов.
Spring Web (основа для создания MVC и REST? )
Thymleaf (Шаблонный движок для создания HTML)
Spring Data JPA (обёртка SQL)
База данных H2 (Вы можете легко создать MySQL или что-то подобное? )
Добавьте эти зависимости
Java переходит от статьи 11 к статье 17.
Springboot изменен до версии 2.7.2.
https://start.spring.io/#!type=gradle-project&language=kotlin&platformVersion=2.7.2&packaging=jar&jvmVersion=17&groupId=com.example&artifactId=springboot&name=springboot&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.springboot&dependencies=web,thymeleaf,data-jpa,h2
Такую же конфигурацию можно создать, перейдя по этому URL.
Запрос, по-видимому, содержит версию и другую информацию.
Если вы нажмете кнопку Genarate
Она становится застегнутой, а DL — возможной.
Похоже, что это то же самое, что и Ktor.
Откройте с помощью IntelliJ и запустите проект.
Если в данный момент что-то открыто, закройте проект, а затем
Откройте проект из нового, неоткрытого состояния.
Если вы не сделаете этого
Если этого не сделать, то ничего из модуля не будет загружено.
Если закрыть все и открыть с привычного экрана JetBrains
Он успешно загружен.
Весну можно начинать.
fun main(args: Array<String>) {
runApplication<SpringbootApplication>(*args)
println("kt")
}
2022-08-08 07:22:40.110 INFO 1036058 — [ main] c.e.springboot.SpringbootApplicationKt : Started SpringbootApplicationKt in 2.191 seconds (JVM бег за 2.55)
kt
Если вы поместите печать между ними, она будет печататься правильно.
Просмотрите зависимые библиотеки в конфигурационном файле gradle
https://spring.pleiades.io/guides/tutorials/spring-boot-kotlin/
Если вы посмотрите на build.gradle.kts
Вы можете увидеть, от каких библиотек он зависит.
plugins {
id("org.springframework.boot") version "2.7.2"
id("io.spring.dependency-management") version "1.0.12.RELEASE"
kotlin("jvm") version "1.6.21"
kotlin("plugin.spring") version "1.6.21"
kotlin("plugin.jpa") version "1.6.21"
}
plugins показывает основные библиотеки
- Spring Boot 2.7.2
- JVM, spring plugins, JPA, these 1.6.21
В ней упоминается использование этих библиотек в качестве базовых.
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
- JPA
- ThymeLeaf
- Web
- База данных H2
Мы подтвердили, что они включены в качестве библиотек расширения.
JPA, Thymleaf и H2, версии которых здесь недоступны.
Резюме.
Чтобы создать приложение Springboot на языке Kotlin
Создайте &DL с помощью Spring Initializer
Распакуйте его локально.
Откройте его в IntelliJ, не открывая ничего.
Это все, что вам нужно сделать для его создания.
В будущем
https://spring.pleiades.io/guides/tutorials/spring-boot-kotlin/
Прочитайте руководство Kotlin Spring.
https://qiita.com/kawasaki_dev/items/1a188878eb6928880256#%E5%8F%82%E8%80%83%E6%83%85%E5%A0%B1
Попробуйте CRUD в MVC
Попробуйте CRUD в REST
Попробуйте изменить тесты на Gauge/Selenide