# Setup

Im weiteren Verlauf dieser Hilfe sind Code-Beispiele in Kotlin geschrieben. Als Build System wird Gradle verwendet.

# Spring Initializr

Mit Spring Initializr (opens new window) kann mit wenigen Klicks ein fertiges Projekt-Gerüst mit den passenden Dependencies erzeugt werden.

Unter Project "Gradle Project" und unter Language "Kotlin" auswählen. Darunter können noch ein paar Metadaten angepasst werden. Packaging sollte auf "Jar" stehen, als Java Version "11" wählen.

Auf der rechten Seite können dann die benötigten Spring Dependencies hinzugefügt werden.

spring initializr

# IntelliJ Ultimate

Manche IDEs haben Spring Initializr (oder vergleichbare Assistenten) auch direkt integriert. So muss man in der Ultimate Edition (nicht Community Edition) von IntelliJ nicht in den Browser wechseln, sondern kann die obigen Schritte direkt in der IDE ausführen.

Beim Erstellen eines neuen Projektes wird "Spring Initializr" ausgewählt. Dort kann man dieselben Einstellungen tätigen wie auf der Webseite.

Projekttyp

Unter Projekt SDK sollte ein passendes SDK ausgewählt sein (Empfehlung: temurin-11). Dieses kann IntelliJ automatisch herunterladen (Download JDK... im Dropdown).

Download JDK

Danach werden die Dependencies ausgewählt:

Dependencies

# Ergebnis

So sieht die erzeugte build.gradle.kts für Gradle auszugsweise aus, wenn keine Dependencies gewählt wurden:

plugins {
  id("org.springframework.boot") version "2.6.2"
  id("io.spring.dependency-management") version "1.0.11.RELEASE"
  kotlin("jvm") version "1.6.10"
  kotlin("plugin.spring") version "1.6.10"
}

// ...

dependencies {
  implementation("org.springframework.boot:spring-boot-starter")
  implementation("org.jetbrains.kotlin:kotlin-reflect")
  implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
  testImplementation("org.springframework.boot:spring-boot-starter-test")
}

Der erzeugte Code findet sich in DemoApplication.kt und ist recht minimal:

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)
}

Ansonsten wird auch noch eine (leere) application.properties Datei erzeugt. Diese dient zur Konfiguration.

# Starten

Die Anwendung kann über den Gradle Task bootRun gestartet werden:

Gradle task bootRun

Mit dem Task bootJar wird eine ausführbare JAR Datei erzeugt, die sogar alle Dependencies enthält.

# Zusätzliche Dateien

Für eine konsistente Formatierung empfiehlt sich direkt im Projektverzeichnis (wo auch build.gradle.kts liegt) die folgende .editorconfig Datei anzulegen:

# http://editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[{go.mod,go.sum,*.go}]
indent_style = tab
indent_size = 8

Damit Zeilenumbrüche auf verschiedenen Plattformen (Windows, Linux, Mac) passend umgewandelt werden, wenn Dateien mit Git verwaltet werden, empfiehlt sich noch diese .gitattributes Datei:

* text=auto