Ullenboom | Spring Boot 4 und Spring Framework 7 | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 1024 Seiten

Ullenboom Spring Boot 4 und Spring Framework 7

Das umfassende Handbuch
3. Auflage 2026
ISBN: 978-3-367-11737-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Das umfassende Handbuch

E-Book, Deutsch, 1024 Seiten

ISBN: 978-3-367-11737-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Professionelle Enterprise-Anwendungen mit Java, ohne Ballast und voll auf der Höhe der Zeit!

Willkommen in der Welt von Spring und Spring Boot! Dieses umfassende Handbuch von Bestsellerautor Christian Ullenboom zeigt Ihnen von Managed Beans bis hin zu Spring AI, was Sie über das Framework wissen sollten. Zum Lernen im Hands-On-Modus ebenso wie zum Vertiefen und Nachschlagen. Es bietet ein durchgehendes Anwendungsbeispiel, das sich schon in vielen Schulungen bewährt hat, enthält viele Tipps aus jahrelanger Praxis und klärt über mögliche Stolperfallen auf. Unabhängig davon, mit welcher Architektur Sie entwickeln und wie groß Ihre Projekte sind: Mit dem richtigen Know-how im Rücken sind Sie bereit für professionelle und moderne Softwareentwicklung mit Spring und Java.

Aus dem Inhalt:

  • Das erste Projekt aufsetzen
  • Spring Core Container
  • Dependency Injection und Inversion of Control
  • Testgetriebene Entwicklung mit Spring Boot
  • Caching
  • Jakarta Persistence Query Language
  • Spring Data
  • RESTful Webservices
  • OpenAPI-Dokumentation
  • Spring AI
  • Spring Security
  • Monitoring
  • Logging
  • Deployment
Ullenboom Spring Boot 4 und Spring Framework 7 jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


  Vorwort ... 23

  1.  Einleitung und erstes Beispiel ... 33


       1.1 ... Geschichte von Spring Framework und Spring Boot ... 33

       1.2 ... Dependencies und Starter eines Spring-Boot-Projekts ... 53

       1.3 ... Einstieg in die Konfigurationen und das Logging ... 62

  2.  Container für Spring-managed Beans ... 67


       2.1 ... Spring-Container ... 67

       2.2 ... Design und Strukturierung einer Anwendung ... 75

       2.3 ... Spring-managed Beans durch Classpath-Scanning aufnehmen ... 81

       2.4 ... Interaktive Anwendungen mit der Spring Shell ... 91

       2.5 ... Die Verweisspritze ... 96

       2.6 ... Konfigurationsklassen und Fabrikmethoden ... 114

       2.7 ... Abstraktion und Qualifizierungen ... 132

       2.8 ... Lebenszyklus der Beans ... 149

       2.9 ... Annotationen aus »Jakarta Dependency Injection« * ... 170

       2.10 ... Autokonfiguration ... 172

       2.11 ... Spring Expression Language (SpEL) ... 186

  3.  Ausgewählte Module des Spring Frameworks ... 193


       3.1 ... Hilfsklassen im Spring Framework ... 193

       3.2 ... Externe Konfiguration und das Environment ... 194

       3.3 ... Am Anfang und Ende ... 241

       3.4 ... Ereignisbehandlung ... 251

       3.5 ... Ressourcenabstraktion mit Resource ... 266

       3.6 ... Typkonvertierung mit ConversionService ... 271

       3.7 ... Internationalisierung * ... 289

       3.8 ... Scheduling * ... 295

       3.9 ... Typen aus org.springframework.*.[lang|util] ... 300

       3.10 ... JSpecify-Null-Annotationen in Spring ... 306

  4.  Testgetriebene Entwicklung mit Spring Boot ... 309


       4.1 ... Grundlagen der testgetriebenen Entwicklung ... 309

       4.2 ... Testen mit Mock-Objekten ... 319

       4.3 ... Testen mit Spring-Unterstützung ... 328

  5.  Ausgewählte Proxies ... 341


       5.1 ... Proxy-Pattern ... 342

       5.2 ... Caching ... 346

       5.3 ... Asynchrone Aufrufe ... 366

       5.4 ... TaskExecutor * ... 374

       5.5 ... Spring und Bean Validation ... 380

  6.  Relationale Datenbanken anbinden ... 393


       6.1 ... Eine H2-Datenbank aufsetzen ... 393

       6.2 ... Datenbankzugriffe mit Spring realisieren ... 402

       6.3 ... Der Spring Boot Starter JDBC ... 404

       6.4 ... JdbcTemplate ... 417

       6.5 ... Datentypen zum Mapping auf Ergebnisse ... 423

       6.6 ... NamedParameterJdbcTemplate ... 434

       6.7 ... Batch-Operationen * ... 440

       6.8 ... Es wird groß mit BLOB und CLOB * ... 449

       6.9 ... Das Paket org.springframework.jdbc.core.simple * ... 450

       6.10 ... Das Paket org.springframework.jdbc.object * ... 457

       6.11 ... Transaktionen ... 460

  7.  Jakarta Persistence mit Spring ... 475


       7.1 ... Welt der Objekte und der Datenbanken ... 475

       7.2 ... Jakarta Persistence ... 481

       7.3 ... Spring Data JPA ... 484

       7.4 ... Die Jakarta-Persistence-Entity-Bean ... 487

       7.5 ... Die Jakarta Persistence API ... 494

       7.6 ... Die Jakarta Persistence Query Language (JPQL) ... 501

       7.7 ... Datenbankfunktionen aufrufen und native SQL-Abfragen senden ... 523

       7.8 ... Schreibender Zugriff mit dem EntityManager in Transaktionen ... 530

       7.9 ... Persistence Context und weitere Transaktionssteuerungen ... 537

       7.10 ... Weiterführende O/R-Metadaten ... 542

       7.11 ... Beziehungen zwischen Entitäten ... 563

       7.12 ... FetchType: Lazy und Eager Loading ... 577

       7.13 ... Cascading ... 582

       7.14 ... Repositories ... 587

  8.  Spring Data JPA ... 597


       8.1 ... Welche Aufgaben erfüllt Spring Data? ... 597

       8.2 ... Spring Data Commons: CrudRepository ... 599

       8.3 ... Untertypen von CrudRepository: JpaRepository usw. ... 605

       8.4 ... Blättern und Sortieren mit [List]PagingAndSortingRepository ... 609

       8.5 ... QueryByExampleExecutor * ... 620

       8.6 ... Eigene Abfragen mit @Query formulieren ... 626

       8.7 ... Stored Procedures (gespeicherte Prozeduren) * ... 636

       8.8 ... Derived Query Methods ... 640

       8.9 ... Die Criteria API und der JpaSpecificationExecutor ... 647

       8.10 ... Alternativen zu JDBC und Jakarta Persistence ... 659

       8.11 ... Gutes Design mit Repositories ... 673

       8.12 ... Projektionen ... 678

       8.13 ... [Fetchable]FluentQuery * ... 685

       8.14 ... Auditing * ... 687

       8.15 ... Incremental Data Migration ... 691

       8.16 ... Die Datenzugriffsschicht testen ... 697

  9.  Spring Data für NoSQL-Datenbanken ... 709


       9.1 ... Not only SQL ... 709

       9.2 ... MongoDB ... 710

10.  Spring Web ... 725


       10.1 ... Webserver ... 725

       10.2 ... Dynamische Inhalte generieren ... 732

       10.3 ... Spring Web MVC ... 737

       10.4 ... Hot Code Swapping ... 744

       10.5 ... Das Hypertext Transfer Protocol (HTTP) ... 745

       10.6 ... Request Matching ... 748

       10.7 ... Response senden ... 751

       10.8 ... Request auswerten ... 763

       10.9 ... Typkonvertierung der Parameter ... 789

       10.10 ... Ausnahmebehandlung und Fehlermeldung ... 798

       10.11 ... Webservices und RESTful API ... 813

       10.12 ... GraphQL ... 816

       10.13 ... Asynchrone Web-Requests * ... 845

       10.14 ... Spring Data Web Support ... 849

       10.15 ... Dokumentation einer RESTful API mit OpenAPI ... 856

       10.16 ... Testen der Webschicht ... 866

       10.17 ... Best Practices bei der Nutzung einer RESTful API ... 876

       10.18 ... Webanwendungen mit Spring Security absichern ... 883

       10.19 ... RESTful Webservices konsumieren ... 913

11.  Spring AI ... 931


       11.1 ... Was ist künstliche Intelligenz? ... 931

       11.2 ... Ollama ... 933

       11.3 ... KI-Modelle in Java-Programmen integrieren ... 935

       11.4 ... Spring AI nutzen ... 936

       11.5 ... Prompt aufbauen ... 940

       11.6 ... Nachrichtenmodell und Prompt-Struktur ... 943

       11.7 ... Strukturierte Ausgaben und Objekt-Mapping ... 948

       11.8 ... Zugriff auf aktuelle und lokale Daten ... 951

       11.9 ... Advisors ... 958

       11.10 ... Verwaltung von Konversationskontext mit ChatMemory ... 962

       11.11 ... Vektoren, Embeddings und semantische Suche ... 965

       11.12 ... Ausblick ... 971

12.  Logging und Monitoring ... 973


       12.1 ... Logging ... 973

       12.2 ... Logging-Implementierung ... 974

       12.3 ... Anwendungen mit dem Spring Boot Actuator überwachen ... 982

       12.4 ... Micrometer und Prometheus ... 991

13.  Build und Deployment ... 999


       13.1 ... Spring-Boot-Programme verpacken und ausführen ... 999

       13.2 ... Spring-Anwendungen im OCI-Container ... 1002

  Index ... 1015


Vorwort


Was ist Spring Boot?


Spring Boot ist aktuell das wichtigste Java-Enterprise-Framework und bietet der Entwicklergemeinschaft viele Vorteile: Es ist leicht zu lernen und zu verwenden und erleichtert die Entwicklung von Microservices. Richtig entwickelt, sind Spring-Boot-Anwendungen skalierbar und eignen sich daher perfekt für robuste Unternehmensanwendungen.

Vorkenntnisse und Zielgruppe


Spring ist ein sehr beliebtes Framework in der Java-Community und hat sich in den vergangenen Jahren zu einem Quasistandard entwickelt. Daher wurde dieses Buch für alle diejenigen konzipiert, die Unternehmensanwendungen mit Datenbankanbindung und Webservices entwickeln möchten. Es ist sowohl für Anfänger als auch für Fortgeschrittene geeignet und liefert zahlreiche praktische Beispiele.

Voraussetzung sind robuste Java-Kenntnisse und der sichere Umgang mit Werkzeugen wie Maven. Mit relationalen Datenbanken sollte die Leserschaft grundlegend vertraut sein.

Die Demoanwendung Date4u, Aufgaben und Lösungen


Mit diesem Handbuch und einer Entwicklungsumgebung des Vertrauens lassen sich Spring-Programme entwickeln. Um ein neues Framework zu erlernen, reicht das Lesen aber nicht aus. Wer eine Programmiersprache oder ein Framework erlernen möchte, muss sie bzw. es wie eine Fremdsprache üben und »sprechen«. Java ist dabei die Sprache mit ihrer Grammatik, Spring liefert das Vokabular für die Anwendungsentwicklung.

Zur genaueren Erläuterung wird in diesem Buch eine Dating-Anwendung für Einhörner implementiert. Dieses unterhaltsame Beispiel demonstriert alle zentralen Bestandteile einer Enterprise-Anwendung: das Zusammenspiel von Komponenten, die Speicherung der Profildaten in einer Datenbank und den Zugriff über Webservices. Die Leserschaft wird Schritt für Schritt durch die Anwendung geleitet, und im Text eingestreut finden sich immer wieder Aufgaben, die zur Übung einladen. Zu jeder Aufgabe folgt ein Lösungsvorschlag, sodass sich der Text linear lesen lässt. Die Anwendung Date4u ist per Download verfügbar (siehe https://rheinwerk-verlag.de/6362).

Organisation der Kapitel


Das Buch gliedert sich in folgende Kapitel:

Kapitel 1, »Einleitung und erstes Beispiel«, stellt das Spring Framework und die »Erweiterung« Spring Boot vor. Es wird gezeigt, wie ein Projekt angelegt wird. Außerdem werden der Aufbau der Maven-POM-Datei sowie die Bedeutung der Starter und Dependencies erläutert.

In Kapitel 2, »Container für Spring-managed Beans«, steht der Spring-Kontext im Mittelpunkt. Schritt für Schritt wird aus einer einzigen Klasse ein Geflecht von Spring-managed Beans aufgebaut, um Bilder im Dateisystem abzulegen und zu laden.

Die Verwaltung von Spring-managed Beans ist eine Kernaufgabe des Spring Frameworks, aber es gibt viele weitere Features, die Kapitel 3, »Ausgewählte Module des Spring Frameworks«, anspricht. Dazu zählen die externe Konfiguration, die Ereignisbehandlung, Konvertierungsklassen und diverse Utility-Klassen.

Kapitel 4, »Testgetriebene Entwicklung mit Spring Boot«, zeigt, warum automatisierte Tests ein fester Bestandteil der Entwicklung sind. Dazu gehören Tests außerhalb des Spring-Containers, Tests innerhalb des Spring-Containers mit Kontext sowie der Einsatz von Mocking, um Abhängigkeiten gezielt zu ersetzen.

In Kapitel 5, »Ausgewählte Proxies«, geht es mit besonderen »Ringen« weiter, die sich um Komponenten legen und damit das Caching, asynchrone Aufrufe oder die Validierung übernehmen. Das bietet den Vorteil, dass bestimmte Aufgaben an das Framework verlagert werden können, sodass der eigene Code schlanker wird.

In den ersten fünf Kapiteln stehen der Spring-Container und Hilfsklassen im Mittelpunkt, aber keine Speichertechnologien. Das ändert sich in Kapitel 6, »Relationale Datenbanken anbinden«. In diesem Kapitel wird ein Datenbankmanagementsystem vorbereitet, und es werden SQL-Anfragen an die Datenbank demonstriert.

Das Schreiben in Datenbanken mit der JDBC-API ist einfach und direkt, aber unkomfortabel. Daher führt Kapitel 7, »Jakarta Persistence mit Spring«, in das objektrelationale Mapping ein.

Datenzugriffsschichten sind in jeder größeren Anwendung nötig. Kapitel 8, »Spring Data JPA«, stellt ihre Möglichkeiten exemplarisch anhand des Familienmitglieds Spring Data JPA vor. Repositories lassen sich damit einfach schreiben, und viele Abfragen und Datentransformationen werden vom Framework realisiert.

Relationale Datenbanken werden flankiert von nichtrelationalen Datenbanksystemen, die ebenfalls ausgezeichnet in die Spring-Data-Familie integriert sind. Kapitel 9, »Spring Data für NoSQL-Datenbanken«, zeigt am Beispiel von MongoDB, wie die Spring-Data-Konzepte in die NoSQL-Welt übertragen werden.

Nachdem mit der Datenhaltung ein wichtiger Teil der Infrastruktur beschrieben wurde, geht es mit Anwendungen des HTTP-Protokolls in Kapitel 10, »Spring Web«, weiter. Dort stehen RESTful Webservices und HTTP-Clients im Mittelpunkt.

Kapitel 11, »Spring AI«, bietet einen Einblick in die neue API zur Nutzung von Large Language Models.

Mit dem bisher erworbenen Wissen lässt sich eine Anwendung betreiben, aber es ist wichtig, auch von außen in die Anwendung schauen zu können, um zu prüfen, ob die »Betriebstemperatur« stimmt. Kapitel 12, »Logging und Monitoring«, stellt mit dem Actuator-Projekt eine Möglichkeit vor, Daten einer Anwendung freizugeben, die dann von externen Lösungen abgeholt und visualisiert werden können.

Dass ein Programm in der Entwicklungsumgebung und bei den Testfällen nicht versagt, ist gut, aber nur die halbe Miete: Ein Programm muss ausgespielt werden. Dazu stellt Kapitel 13, »Build und Deployment«, unter anderem OCI-Container (aka Docker) vor.

Die *-Abschnitte


Das Spring-Universum ist reich an Feinheiten und verwirrt Einsteiger und Einsteigerinnen oft. Um das nötige Wissen vom verzichtbaren Wissen zu trennen, enden einige Überschriften mit einem *, was bedeutet, dass dieser Abschnitt übersprungen werden kann, ohne dass der Leserschaft etwas Wesentliches für die späteren Kapitel fehlt.

Welche Java-Version wird im Buch genutzt?


Die Mindestanforderung für Spring Boot 4 ist Java 17. Für neue Projekte empfiehlt sich jedoch in der Regel eine aktuelle Long-Term-Support-Version des JDK, da diese von den Herstellern über mehrere Jahre mit Updates und Support versorgt wird. Alle Beispiele in diesem Buch wurden mit Java 26 getestet.

Benötigte Software


Wollen wir Java-Programme laufen lassen, benötigen wir eine JVM. In der Anfangszeit war das einfach. Die Laufzeitumgebung stammte erst von Sun Microsystems, später von der Firma Oracle, die Sun übernommen hatte. Heute ist das deutlich unübersichtlicher. Diverse Institutionen kompilieren das OpenJDK (die Originalquellen enthalten Hunderttausende Zeilen C[++]- und Java-Quellcode) und bündeln es in einer Distribution, die Java-Laufzeitumgebung. Die bekanntesten Laufzeitumgebungen sind:

Hinzu kommen weitere, wie die von Azul Systems oder Bellsoft. Zum Lernen mit diesem Buch kann man sich frei für eine Distribution entscheiden; mit Adoptium liegt man gut.

Die Entwicklungsumgebung


Java-Quellcode ist nur Text, sodass im Prinzip ein einfacher Texteditor reicht. Allerdings können wir mit einem Editor wie Notepad keine große Produktivität erwarten. Moderne Entwicklungsumgebungen unterstützen uns in vielerlei Hinsicht: durch farbige Hervorhebungen von Schlüsselwörtern, automatische Codevervollständigung, intelligente Fehlerkorrektur, durch das Einfügen von Codeblöcken, die Visualisierung von Zuständen im Debugger und durch vieles mehr. Es ist daher ratsam, eine vollständige Entwicklungsumgebung zu verwenden. Drei populäre IDEs sind: IntelliJ, Eclipse und Visual Studio Code.

Die Wahl der Entwicklungsumgebung ist wie bei den Laufzeitumgebungen...


Ullenboom, Christian
Christian Ullenboom, Dipl.-Informatiker, ist seit Jahrzehnten in der Welt der C-Programmierung zu Hause, ein erfahrener Fachbuchautor und seit 1997 Trainer und Berater für objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Christian Ullenboom bietet auch Rheinwerk Seminare zu Java und Spring an.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.