# Zusammenfassung

Hilfe:

# Setup

Spring Initializr (opens new window) bzw. IDE-Assistent (wo verfügbar)

Häufige Dependencies:

  • Spring Reactive Web
  • Spring Data JPA
  • Spring Security

# Konfiguration

in application.properties oder application.yml

# Typsicher

@SpringBootApplication
@ConfigurationPropertiesScan
class DemoApplication(
  private val config: MyAppProperties
)

@ConfigurationProperties("my.app")
@ConstructorBinding
data class MyAppProperties(
  val pageTitle: String?,
  val retries: Int = 3,
  val silent: Boolean = false,
  val defaultAuthor: Author?
) {
  @ConstructorBinding
  data class Author(
    val name: String,
    val mail: String
  )
}

# Metadaten

// build.gradle.kts

plugins {
  // ...
  kotlin("kapt") version "1.4.30"
}

dependencies {
  // ...
  kapt("org.springframework.boot:spring-boot-configuration-processor")
}

# Logging

Gradle:

// https://mvnrepository.com/artifact/io.github.microutils/kotlin-logging-jvm
implementation("io.github.microutils:kotlin-logging-jvm:2.0.4")

ganz oben in Klasse oder .kt Datei:

private val logger = KotlinLogging.logger {}

# Konsolenanwendung

  @Bean
  fun runner() = CommandLineRunner { args ->
    /* ... */
  }

# Beans

  • @Configuration: Klasse, die @Beans bereitstellt
  • @Component: Klasse, die selbst das Bean ist
  • @Service: auch eine Component, für Business Logik

Name überschreiben / selektieren:

@Bean("myBean")
fun gimmeBean() /* ... */

@Qualifier("myBean") theBean: TheType

# Build-Info

// build.gradle.kts
springBoot {
  buildInfo()
}

// in der Anwendung dann Bean anfordern
private val buildInfo: BuildProperties