erfolgreich studieren Wolfgang Golubski Entwicklung verteilter Anwendungen Mit Spring Boot & Co erfolgreich studieren Das Konzept „erfolgreich studieren“ entspricht einer zentralen Herausforderung der Lehrenden und Stu- dierenden von heute: Es stehen immer geringere Zeitbudgets fürs Vermitteln und Lernen zur Verfügung, während gleichzeitig der Wissensumfang und die Komplexität von Wissen stetig zunehmen. Am Anfang jedes Kapitels finden Sie die Lernziele in einen kurzen Text erklärt und mit drei Punkten konkretisiert. Pro Lernziel gibt es mindestens ein Beispiel und eine Aufgabe. Bei der Aufgabe wird nur die Lösung angezeigt, den Lösungsweg der Aufgaben finden Sie auf dem Onlineportal. Dort gibt es auch weitere Aufgaben. Wichtige neue Begriffe sind kursiv gesetzt und werden erklärt. Typografische Hervorhebungen weisen auf „gefährliche“ Stellen, wo leicht Lernfehler entstehen können. Am Ende jedes Kapitels wird der Inhalt durch Verständnisfragen und Aufgaben wiederholt. Weitere Bände in dieser Reihe: http://www.s pringer.c om/series/16244 Wolfgang Golubski Entwicklung v erteilter A nwendungen Mit Spring Boot & Co Wolfgang Golubski Fakultät Physikalische Technik/Informatik, Fachgruppe Informatik Westsächsische HS Zwickau Zwickau, Deutschland ISSN 2524-8693 ISSN 2524-8707 (electronic) erfolgreich studieren ISBN 978-3-658-26813-8 ISBN 978-3-658-26814-5 (eBook) https://doi.org/10.1007/978-3-658-26814-5 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über 7 http://dnb.d-nb.de abrufbar. Springer Vieweg © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht aus- drücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröffentlichten Karten und Institutionsadressen neutral. Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany V Vorwort Vielen Dank, dass Sie sich für dieses Buch entschieden haben. Ich möchte Sie in die auf- regende und faszinierende Welt der Entwicklung verteilter Anwendungen begleiten. Sie lernen, Schritt für Schritt Webanwendungen mit dem Spring Framework und Spring Boot 2 zu realisieren. Die dahinter liegenden Konzepte werden Sie kennenlernen, erklä- ren und anwenden können. Warum ein Buch über Spring und Spring Boot 2 schreiben? Spring ist ein Framework, das die Entwicklung von komplexen Java-Anwendungen unterstützt. Damit sind sowohl Java- als auch Java EE-Anwendungen gemeint. Java EE (neuer Name ist Jakarta EE) ist die Spezifikation einer Software-Architektur für Unter- nehmensanwendungen. Häufig sind diese als Anwendungen ausgelegt, die auf verteil- ten Systemen ausgeführt werden. Der Ursprung von Java EE geht auf Ende 1999 zurück. Spring wiederum hat 2002 als leichtgewichtiges und Open Source Framework seine Erfolgsgeschichte begonnen. Dabei ist das große Ziel gewesen, die Konzepte und die Entwicklungsarbeit zu vereinfachen. Mittlerweile existieren eine Vielzahl an weiteren Projekten, die auf dem Spring Framework basieren. Eines dieser Projekte ist Spring Boot 2. Der Projektstart ist 2013 gewesen und das erste Release ist 2014 erschienen. Seit Januar 2019 kann das Release 2.1.2 eingesetzt werden. Spring Boot 2 vereinfacht die Entwicklungsarbeit noch weiter, indem erprobte und sinnvolle Standardkonfiguratio- nen angeboten und verwendet sowie Stand-Alone-Anwendungen mit eingebettetem (Web-)Server erstellt werden. Wer gerne programmiert, wird diese Art zu programmie- ren nach einiger Zeit zu schätzen lernen – größere Anwendungen zu schreiben, ist so- wohl eine Herausforderung als auch ein Genuss. Derzeit existiert nur wenig deutschsprachige Literatur zu Spring und Spring Boot 2. Der Ausgangspunkt und die Herausforderung bei der Entwicklung dieses Buches ist für mich gewesen, ein Buch zu schreiben, das von Lesern mit Java-Grundwissen, wie es zum Beispiel im Studium durch eine ein- oder besser noch zweisemestrige Lehrveranstaltung vermittelt wird, verstanden und nachvollzogen werden kann. Mein Ziel ist, eine Einfüh- rung in die komplexe Spring-Welt zu gestalten, um auch Spring-Interessierten ohne jah- relange Berufserfahrung als Java-Entwickler einen passenden Einstieg ohne zu große Strapazen in die spannenden Entwicklungsarbeiten zu ermöglichen. H ilfreiche Vorkenntnisse Objektorientierte Java-Programmierung mit Vererbung und Interfaces sowie Unit-Tests werden vorausgesetzt. Wissen über Threads oder MVC wäre hilfreich, ist aber nicht un- bedingt notwendig. Ähnliches gilt für die Grundlagen von Netzwerken und Datenban- ken. Das Spring Framework ermöglicht diese Sichtweise durch seine Abstraktion von konkreten Implementierungen (Bibliotheken). V I Vorwort Was bietet das Buch? Bewusst habe ich eine Einschränkung auf eine Auswahl der vielen Möglichkeiten von Spring und Spring Boot 2 vorgenommen. Nach erfolgreichem Durcharbeiten des Buches und der Auseinandersetzung mit den angebotenen Projekten können Sie mehrschich- tige Webanwendungen inklusive der Datenbank-Nutzung konzipieren und realisieren. An Sicherheit habe ich natürlich auch gedacht. Themen wie aspektorientierte Programmierung, Transaktionen oder REST werden Sie ebenfalls finden. Die dahinter liegenden Konzepte werden erläutert und die von Spring standardmäßig eingesetzten Realisierungen detaillierter beschrieben. Wich- tig für das Arbeiten mit dem Spring Framework und Spring Boot 2 ist nach meiner Erfahrung, dass Sie ein gewisses Verständnis von den im Hintergrund stattfinden- den Abläufen bekommen. Dies erleichtert Ihre Arbeit mit dem Framework enorm. D as Konzept Das Buch habe ich so konzipiert, dass es sich sowohl zum Selbststudium als auch als Lehrbuch zu einer Vorlesung eignet. Die Buchkapitel bauen aufeinander auf. Anhand eines größeren Anwendungsbeispiels werde ich nach und nach zusätzliche Funktiona- litäten hinzunehmen und deren Realisierung beschreiben. Dabei werde ich auf die zugrundeliegenden Konzepte eingehen und eine geeignete Implementierung vorstel- len und im Detail beschreiben. Wie können Sie mit dem Buch lernen? Die Inhalte sind so aufbereitet, dass sie meistens direkt anhand von Programmcode erklärt und/oder nachvollzogen werden können. Dies kann ich jedem Leser empfeh- len. Spring und Spring Boot 2 lernt sich am leichtesten mit entsprechenden Pro- grammbeispielen. Aus diesem Grund habe ich für ein Spring-Projekt Schritt für Schritt immer neue Anforderungen hinzugefügt und eine dafür mögliche technische Lösung vorgeschlagen, diskutiert und erläutert. Somit wird die Lösung immer umfangreicher und mit einer Reihe von Features (wie Web, Datenbank, Transaktion, Sicherheit, REST- Kommunikation mit externen Diensten) ausgestattet. In jedem Kapitel sind Aufgaben enthalten, mit denen Sie Ihr Wissen festigen und gleichzeitig das Verständ- nis überprüfen können. Neben den Aufgaben habe ich an geeigneten Stellen mögliche Prüfungsfragen formuliert. Damit können Sie Ihr Wissen und Ihre Kompetenz über- prüfen. Ich habe in diesem Buch viel Wert auf Einfachheit gelegt. Bei der Entwicklung der Lö- sungen können Sie gerne die vorgegebenen Projekte oder Teile als „Blaupausen“ verwen- den. Die Arbeitsweise mit Hilfe von im Internet recherchierten Programmcodeteilen ist mittlerweile nicht unüblich. Für Spring und Spring Boot 2 werden Sie eher recht kom- plexe Lösungsvorschläge finden. Diese zu verstehen ist oftmals zeitaufwändig, da weiter- führendes Spring-Wissen implizit vorausgesetzt wird. Daher empfehle ich, dass Sie zu- nächst versuchen mit meinen Blaupausen zum Erfolg zu kommen. VII Vorwort Die Webseite des Buches Den Programmcode zu den Kapiteln finden Sie im zugehörigen Git Repository unter 7 https://gitlab.c om/wogo/evaspringbuch. Weitere Informationen zum Thema oder zur Einrichtung der Entwicklungsumgebung sind auf der Webseite zum Buch 7 http://www.e vaspringbuch.d e/ aufbereitet. C ode-Schreibstil-Konventionen Programmcode wird in der Regel in Listings dargestellt. Im Text können Sie ihn an der sofort erkennen. Auch Klassen- oder Me- nichtproportionalen Schriftart thodennamen in beschreibenden Texten außerhalb der Listings sind in dieser Schriftart gedruckt. An manchen Stellen ist es nicht möglich gewesen, ein Java-Kommando in einer Zeile darzustellen. Im Editor der Entwicklungsumgebung ist das kein Problem, aber eine Buchseite hat weniger maximale Zeichen. Daher setzen wir das Zeilenfortsetzungszei- chen an diesen Stellen ein. G ender-Erklärung Aus Gründen der besseren Lesbarkeit wird in diesem Buch die Sprachform des generi- schen Maskulinums angewendet. Es wird an dieser Stelle darauf hingewiesen, dass die ausschließliche Verwendung der männlichen Form geschlechtsunabhängig verstanden werden soll. Für Lehrende und alle Didaktik-Interessierte In 12 bis 15 Wochen mit jeweils einer Lehrveranstaltung pro Woche und einer Übung/ Praktikum oder Ähnlichem vermittle ich seit Jahren den Stoff. Die Lehrveranstaltung dient dabei zur Stoffvermittlung, z. B. durch eine Vorlesung. In den Übungen/Praktika sollen die Studierenden den jeweiligen aktuellen Vorlesungsinhalt an Beispielen selbst nachvollziehen, meistens durch Programmierung einer Spring-Anwendung. V III Vorwort In den vergangenen Jahren habe ich gemeinsam mit meinem Mitarbeiter die Lehrver- anstaltungen als Flipped Classroom durchgeführt. Diese Lehr-/Lernmethode haben wir so gestaltet, dass die Studierenden den Vorlesungsstoff zunächst im Selbststudium vor- bereiten. Dann müssen sie pro Kapitel 1–2 Fragen an uns vor dem nächsten Lehrveran- staltungstermin stellen. Die eingereichten Fragen müssen mit dem vorbereiteten Kapitel zusammenhängen. Nach unserer Erfahrung sollte man großen Wert auf detaillierte und wohlbegründete Fragen legen. Die eingereichten Fragen werden dann ausgewertet und eine Auswahl in der nächsten Lehrveranstaltung behandelt. Wer neugierig ist, kann auf der Webseite zum Buch mehr Informationen dazu finden. Da der Flipped-Classroom-Ansatz das Selbststudium stark fördert, können Sie das Buch genauso gut zum eigenständigen Lernen verwenden – also ganz ohne begleitende Vor- lesung. In einem klassischem Vorlesungsformat kann das Buch als begleitende Literatur dienen. IX Danksagungen Ich möchte mich bei allen bedanken, die direkt oder indirekt zum Gelingen des Buches beigetragen haben. Das Buch wäre niemals ohne die Unterstützung meiner Lektorin Frau Sybille Thelen entstanden, die immer ein offenes Ohr für meine Fragen und jederzeit eine Lösung parat hatte. Für die vielen Diskussionen und Gespräche zu dem Lehrveranstaltungsformat Flipped Classroom danke ich Herrn Oliver Arnold. Mit viel Geduld haben wir immer wieder über die fachlichen Inhalte und die didak- tischen Vorgehensweisen reflektiert. Obendrein ist er ein super guter Korrekturleser! Den Studierenden meiner Lehrveranstaltungen der vergangenen Jahre gilt ebenfalls mein Dank. Ihr Feedback und die Diskussionen über Verbesserungsideen sind in das Buch eingeflossen. Meiner Frau Barbara und meinen Söhnen Lennart und Torben danke ich ebenfalls für ihre fortwährende Unterstützung und dass sie mir die viele Zeit für das Schreiben gege- ben haben. Viel Spaß und Happy Coding! Wolfgang Golubski