Inhaltsverzeichnis | 5 |
Geleitwort | 13 |
Vorwort | 15 |
Wege durch das Buch | 21 |
I Einleitung | 27 |
Hallo, Spring Boot | 29 |
Projektdefinition oder „Project Object Model“ | 29 |
Abhängigkeiten definieren | 31 |
Hallo, Welt! | 33 |
Liefern | 36 |
Fehler erkennen | 38 |
II Spring Boot | 41 |
Projektstruktur | 43 |
Build-Management-Tools | 43 |
Maven | 44 |
Gradle | 49 |
Pakete und Klassen strukturieren | 51 |
Spring Initializr | 53 |
IDE-Unterstützung | 55 |
Spring Tool Suite | 55 |
NetBeans IDE | 59 |
IntelliJ IDEA | 62 |
Die Qual der Wahl | 64 |
Spring-Framework-Grundlagen | 65 |
Dependency Injection | 66 |
Der Spring-Container | 66 |
Inversion of Control | 68 |
Ausblick | 72 |
Aspektorientierte Programmierung | 72 |
Einführung | 72 |
Spring und AOP | 73 |
Konfiguration | 77 |
Externe Konfiguration | 77 |
Konfigurationsdateien | 79 |
Zugriff auf Konfiguration | 84 |
Interne Konfiguration | 94 |
Profile | 94 |
Konfigurationsklassen | 96 |
Automatische Konfiguration | 103 |
Die Magie hinter Spring Boot | 107 |
Grundlagen | 108 |
Namensgebung | 109 |
Factories Loader | 109 |
Konfiguration, nur unter Bedingung | 110 |
Auf Anwesenheit von Klassen hin testen | 111 |
Auf Anwesenheit von Beans hin testen | 112 |
Die Konfiguration auswerten | 113 |
Weitere Bedingungen nutzen | 113 |
Bedingungen logisch verknüpfen | 114 |
Metadaten bereitstellen | 115 |
Ihren Starter deployen | 115 |
Fazit | 117 |
Logging | 119 |
Gemeinsame Konfiguration | 120 |
Erweiterte Konfiguration | 122 |
Logback | 123 |
Log4j 2 | 124 |
Java Util Logging (JUL) | 126 |
Zugriffslogs | 126 |
Tomcat | 126 |
Undertow | 127 |
Remote-Konfiguration | 128 |
HTTP-Endpunkt | 128 |
JMX | 130 |
Remote-Logging | 130 |
Beschleunigter Entwicklungsprozess mit den devtools | 133 |
Automatische Neustarts | 134 |
Automatisches Neuladen von Inhalten | 137 |
III Das Spring-Ökosystem | 139 |
Webanwendungen | 141 |
Spring Web MVC | 142 |
Die Grundlagen verstehen | 142 |
Funktionen kennenlernen | 144 |
Spring Web MVC automatisch konfigurieren | 151 |
Eingebetteten Webcontainer nutzen | 152 |
Statische Inhalte ausliefern | 157 |
JSON-Serialisierung und -Deserialisierung steuern | 158 |
Hochgeladene Dateien verarbeiten | 162 |
Zusätzliche Scopes beherrschen | 165 |
Template Engines | 168 |
Thymeleaf-Templates nutzen | 170 |
Groovy-Templates verwenden | 174 |
Ausblick | 175 |
Über WebSockets kommunizieren | 176 |
JAX-RS nutzen | 177 |
Security | 179 |
Minimale Autokonfiguration | 180 |
Die Grundlagen verstehen | 180 |
Authentifizierung | 181 |
Autorisierung | 182 |
Spring Security und Spring Web MVC | 183 |
Methodensicherheit | 184 |
Sicherheit auf HTTP-Header-Ebene | 185 |
Anwendungsbeispiele | 187 |
Die Standardkonfiguration nutzen | 187 |
Methodensicherheit aktivieren | 189 |
Gesicherte URLs und Methoden testen | 190 |
Eine eigene Benutzerverwaltung anbinden | 192 |
Passwörter sicher speichern | 193 |
HTTP-Sicherheit anpassen | 196 |
Form-Login und Webintegration nutzen | 198 |
Spring Data Repositorys absichern | 199 |
OAuth 2 nutzen | 200 |
Ausblick | 208 |
Persistenz | 209 |
Spring Data | 209 |
Relationale Datenbanken | 210 |
Datasources | 210 |
Datenbankinitialisierung und -migration | 214 |
Transaktionen | 220 |
Datenbankzugriff | 226 |
NoSQL-Technologien | 239 |
Spring Data MongoDB | 239 |
Weitere Spring-Data-Module | 244 |
Fazit | 246 |
Caching | 247 |
Aspekte eines Cache | 247 |
Deklaratives Caching | 248 |
Caching aktivieren | 249 |
Caching mit Spring Boot | 250 |
Beispiele und Sonderfälle | 251 |
Cachen von 3rd-Party-Abhängigkeiten | 252 |
Synchrones Caching | 253 |
Caching von Web-Controller-Methoden | 254 |
Messaging | 255 |
Über JMS kommunzieren | 258 |
JMS-Grundlagen kennen | 259 |
Einen JMS-Broker konfigurieren | 261 |
JmsTemplate und Listener verstehen | 261 |
AMQP nutzen | 268 |
Redis als Messaging-System verwenden | 270 |
Apache Kafka anbinden | 272 |
Ausblick: Spring Cloud Stream | 273 |
E-Mail | 277 |
Mit Spring Boot E-Mails verschicken | 277 |
Reaktive Programmierung | 279 |
Reactive Streams und Project Reactor | 281 |
WebFlux-Modul | 285 |
Klassische Annotationen verwenden | 287 |
Datenquellen | 289 |
Funktionales Programmiermodell | 294 |
Reaktive Methoden testen | 300 |
Reaktive Views benutzen | 302 |
Spring Security mit WebFlux verwenden | 303 |
Ausblick: Spring Cloud Function | 304 |
Tests und Dokumentation | 307 |
Spring-Boot-Starter-Test | 308 |
Unit-Tests | 309 |
Integrationstests | 314 |
Grundlage: Das Frameworkmodul „spring-test“ | 314 |
Spring-Boot-Anwendungen testen | 319 |
Automatische Mock-Objekte | 325 |
Explizite Tests technischer Schichten | 327 |
Erweiterte Testkonfiguration | 332 |
Hilfsmittel | 338 |
Fazit | 339 |
Dynamische JVM-Sprachen und polyglotte Programmierung | 341 |
Groovy | 342 |
Das Spring-Boot-Commandline-Interface | 344 |
Kotlin | 348 |
IV Produktivsetzung | 351 |
Actuator | 353 |
Bereitstellen des Spring Boot Actuator | 353 |
Übersicht | 354 |
Security | 356 |
Konfiguration der HTTP-Endpunkte | 359 |
Konfiguration der JMX-Endpunkte | 359 |
Allgemeine Informationen | 360 |
Health-Status | 362 |
Metriken mit Micrometer aufzeichnen | 364 |
Verfügbare Metriken | 366 |
Eigene Metriken erfassen | 367 |
Den Metrics-Endpunkt benutzen | 368 |
Metriken exportieren und auswerten | 370 |
Eigene Endpunkte | 371 |
Verteilung | 373 |
Artefakte | 373 |
Klassische Installation | 379 |
Als Unix/Linux Service | 379 |
Als Windows-Dienst | 383 |
Servlet-Container | 388 |
War-Deployment | 388 |
Klassische Spring-Anwendungen migrieren | 391 |
Verteilung in die Cloud | 392 |
Cloud Foundry | 393 |
Andere Plattformen und Anbieter | 399 |
V Microservices mit Spring Cloud: ein Einstieg | 401 |
Einführung und Übersicht | 403 |
Was ist eine Microservice-Architektur? | 403 |
Was gehört alles zu Spring Cloud? | 404 |
Spring Cloud in Ihr Projekt einbinden | 405 |
Kontexthierarchien | 406 |
Der Bootstrap-Kontext | 406 |
Der Wochenplaner: ein verteiltes Beispiel | 408 |
Konfiguration in verteilter Umgebung | 409 |
Den Konfigurationsserver starten | 409 |
Clients anbinden | 411 |
Service Discovery mit Netflix Eureka | 413 |
Einen Eureka-Server betreiben | 413 |
Services am Eureka-Server anmelden | 415 |
Services aus Eureka benutzen | 417 |
Circuit Breaker | 423 |
Spring Cloud Hystrix nutzen | 423 |
Weitere Aufgaben lösen | 429 |
Lebenszyklus von Spring-Anwendungen und Beans | 431 |
Auf Ereignisse im Lebenszyklus einer Anwendung reagieren | 431 |
Den Lebenszyklus von Beans verstehen | 434 |
Erweiterte Konfiguration von Datasources | 437 |
Upgrade von Spring Boot 1 auf 2 | 443 |
Spring 5 | 443 |
Neue Voraussetzungen: Spring 5 und Java 8 | 443 |
Neue Funktionen und Verbesserungen | 444 |
Änderungen in Spring Boot 2 | 446 |
Glossar | 451 |
Abkürzungen | 455 |
Index | 457 |