spring boot - und gut? · spring testing: unit-tests, integrationstests, … spring cloud: tools...
TRANSCRIPT
![Page 1: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/1.jpg)
Spring Boot - und gut?
Ein kurzer Überblick über das Spring Framework und Spring Boot
![Page 2: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/2.jpg)
2
Inhalt
Motivation
Was ist das Spring Framework
Was kann das Spring Framework?
Module
Spring Boot
![Page 3: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/3.jpg)
3
Motivation
Einen Überblick über Spring Framework
liefern
Bewusstsein für Anwendungsgebiete
schaffen
Grundlage zur Abgrenzung zu CoreFrame
liefern
![Page 4: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/4.jpg)
4
Was ist das Spring Framework? - Und was ist es nicht?
![Page 5: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/5.jpg)
5
Die Entwicklung von Spring
Basiert auf Rod Johnsons Buch Expert
One-On-One J2EE Design and
Development (2002)
Hauptentwickler Pivotal ist (inzwischen)
ein Joint Venture von VMWare und
General Electric
Version 0.9: Juni 2003
Version 5.0: September 2017
Version 5.0.7: Juni 2018
![Page 6: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/6.jpg)
6
Was ist das Spring Framework?
„Framework of Frameworks“
Unterstützt Entwicklung in Java, Groovy, Kotlin
Ziele
Entwicklung von Enterprise-Anwendungen
vereinfachen
Gute Programmierpraktiken fördern
Entkopplung der Applikationskomponenten
Reduzierung von Gluecode und Redundanz
![Page 7: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/7.jpg)
7
Was ist das Spring Framework nicht?
Keine Konkurrenz zu Jakarta EE
Jakarta EE (aka Java EE oder J2EE)
Neuer Name seit Umzug zur
Eclipse Foundation
Sammlung von API-Spezifikationen
Referenzimplementierungen zu APIs
Häufig mehrere konkurrierende
Implementierungen
![Page 8: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/8.jpg)
8
Was ist das Spring Framework nicht?
Spring Framework
Enterprise-taugliche Frameworks statt
API-Spezifikationen
Basiert in Teilen auf Jakarta EE-
Spezifikationen
Konkurrenz zu Jakarta EE-Implementierungen
![Page 9: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/9.jpg)
9
Was kann das Spring Framework?
![Page 10: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/10.jpg)
10
Features
Aspektorientierte Programmierung
Dependency Injection durch IoC
Container (Spring Context)
Deckt nicht alle Anforderungen an
AOP ab
„…addresses the 80% sweet spot of
AOP requirements in Java enterprise
programming.“
Wenn nötig umfangreiche AspectJ-
Integration
![Page 11: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/11.jpg)
11
Features
Integration von Frameworks
Keine eigenen Lösungen, wenn es
schon gute Frameworks gibt
Hibernate, Flyway, JUnit, Mockito,
Thymeleaf, Jackson, log4j, …
Abstraktionsschichten durch Module
Persistierung, Datenzugriff, Sicherheit,
MVC, Messaging
![Page 12: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/12.jpg)
12
Allgemeines
Entwicklungsumgebung: Spring Tool Suite (STS)
Angepasste Eclipse-Umgebung
Unterstützt bei der Entwicklung mit Spring
Framework und Spring Modulen
Dokumentation
Detaillierte Dokumentation zu allen Modulen
Viele Guides (in STS integriert)
Große Community
Aber: In 15 Jahren kann man viel diskutieren
und beschreiben…
![Page 13: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/13.jpg)
13
Allgemeines
Konfiguration
XML
Annotationen
Java-Code
Module
Essenziell für Spring
204 Repositories auf GitHub
Ca. 50 aktiv
Weitere Community Projekte
![Page 14: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/14.jpg)
14
Module
![Page 15: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/15.jpg)
15
Spring Data
Zugriff auf relationale und NoSQL-Datenbanken
Basis: JPA (Jakarta EEs Java Persistence API)
Features und Integrationen
Zugriff auf Relationale Datenbanken via teilweise
selbstimplementierender Repositories (DAOs) =>
declarative queries
Reaktiver Zugriff auf NoSQL-Datenbanken
JPA-Provider: Hibernate, OpenJPA, EclipseLink, …
DBMS: MySQL, MSSQL, H2, MongoDB, …
Pooling: HikariCP, Tomcat pooling, Commons
DBCP2
![Page 16: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/16.jpg)
16
Spring Security
Authentifizierung
AuthenticationManager
Erhält Benutzerdaten (Authentication) und
entscheidet über Gültigkeit
Implementierungen
– ProviderManager
– AD / LDAP
– JAAS (Java Authentication and Authorization Service)
– OpenID
– …
![Page 17: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/17.jpg)
17
Spring Security
UserDetailsService
Liefert Benutzerdaten und wird (u. a.) vom
AuthenticationManager verwendet
Implementierungen
– InMemoryUserDetailsManager
– JDBC
– LDAP
– …
![Page 18: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/18.jpg)
18
Spring Security
Autorisierung
AccessDecisionVoter
Stimmt für oder gegen Zugriff auf Ressource
Implementierungen
– Auf ACL-Basis
– Ausdrücke
– Rollenbasiert
– …
AccessDecisionManager
Verknüpft eine Reihe von AccessDecisionVotern
mit bestimmter Logik
![Page 19: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/19.jpg)
19
Spring Security
Schutz vor Angriffen
Session fixation
Clickjacking
Cross site request forgery
…
![Page 20: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/20.jpg)
20
Web UI Module
Spring MVC
Basiert auf ServletEngine
Controller +
ViewTemplates
– Thymeleaf, Velocity, JSP
REST-Controller +
dedizierte GUI (z. B. Angular)
![Page 21: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/21.jpg)
21
Vaadin
UI-Framework das mit Spring zusammen
funktioniert
Für single-page web UIs
Logik und Layout werden in Java-Klassen
erstellt (Swing-Ähnlich)
Stark beworben jedoch relativ unflexibel
Möglichkeiten ähneln CoreFrame
![Page 22: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/22.jpg)
22
Spring WebFlux
Modul für reaktive Web-UIs
Controller-basierte API mit
reaktiven Rückgabewerten
(Flux- / Mono-Streams)
Threads werden nicht blockiert
Handling ähnlich zu Spring MVC
Passende reaktive Client-Technologie nötig
![Page 23: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/23.jpg)
23
Weitere Module
Spring Roo: Rapid Application Development / Low code
Generator (nicht aus einem Modell, sondern per
Kommandozeile)
Spring Testing: Unit-Tests, Integrationstests, …
Spring Cloud: Tools für die Entwicklung verteilter
Anwendungen (configuration management, service
discovery, leadership election, distributed sessions, …)
Lombok: Automatische, implizite Implementierung von
Gettern, Settern, Konstruktoren, …
Spring Batch
Statemachine
Spring Mobile
…
![Page 24: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/24.jpg)
24
Spring Boot Die Lösung für Springs größtes Problem
![Page 25: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/25.jpg)
25
Welches Problem löst Spring Boot?
Spring besteht aus sehr vielen Modulen und
integriert sehr viele Frameworks
Es müssen die richtigen Abhängigkeiten in der
passenden Version ausgewählt werden
Jede Komponente muss konfiguriert werden
Spring Boot wählt kontextabhängig die
sinnvollsten Abhängigkeiten und konfiguriert
diese automatisch
Convention over Configuration
![Page 26: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/26.jpg)
26
Runtime: Spring Boot 2.0.3 und Spring Core 5.0.7
Autorisierung / Authentifizierung: Spring Security 5.0.6
Container: Tomcat 8.5.31 (embedded) auf Port 80
Logging: Logback 1.2.3 (Log4J-Nachfolger) via slf4j
(Logging-Facade)
JSON-Binding: Jackson 2.9.6
Datenhaltung: JPA in einer H2 Datenbank
View-Engine: Thymeleaf 3.0.9
YAML-Verarbeitung: SnakeYAML 1.19
Validierung: Validation API / Hibernate Validator 6.0.10
…
Alles konfiguriert und „production ready“
Ich sage: „Sichere MVC-Anwendung mit Spring Boot 2“ Spring Boot sagt:
![Page 27: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/27.jpg)
27
Features
Spring Boot Starter
JAR (per Maven- oder Gradle-
Abhängigkeit)
Enthält
Abhängigkeiten zu
benötigten Frameworks
Daten zur kontextabhängigen Standardkonfiguration
Auto Configuration
Abhängig von
Frameworks im Classpath
existierender Konfigurationsdatei
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
![Page 28: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/28.jpg)
28
Features
Versionsmanagement via Maven BOM (Bill of Material)
Für die wichtigsten Abhängigkeiten wird die Version
angegeben
Die Version aller anderen Abhängigkeiten wird
entsprechend abgeleitet
Auslieferung
Als JAR inkl. embedded Container (Tomcat, Jetty, …)
oder WAR
Und (natürlich) Module…
![Page 29: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/29.jpg)
29
Module
Actuator
HTTP-Endpunkte für das Applicationmanagement
health, info, metrics, sessions, … (insg. 21)
Erweiterbar
Developer Tools
Caches (auch von versch. Modulen) werden deaktiviert
Auto reload / auto restart
Rest Repositories
Spring Data Repositiories per REST zugreifbar machen
HAL Browser
Per Browser durch Repositories navigieren
![Page 30: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/30.jpg)
30
Fazit
Extrem umfangreich
Moderne Architekturen und Techniken
Für viele Anwendungszwecke geeignet
Gut dokumentiert und strake Community
Alleine Spring + Spring Boot stellt oft schon eine
Verbesserung zum Start auf der grünen Wiese dar
Steile Lernkurve
Eignung für Projekte und Auswahl der Module muss mit
viel Hintergrundwissen geprüft werden
![Page 31: Spring Boot - und gut? · Spring Testing: Unit-Tests, Integrationstests, … Spring Cloud: Tools für die Entwicklung verteilter Anwendungen (configuration management, service discovery,](https://reader030.vdocuments.site/reader030/viewer/2022040122/5f0ba35e7e708231d4317cfb/html5/thumbnails/31.jpg)
31
Vielen Dank!
Schiller, Nils
Software-Ingenieur
Tel. +49 (231) 61 804 - 142
Mail: [email protected]