programmieren im jast-stack - w3l · 13 runtime: spring boot 2.0.3 und spring core 5.0.7...
TRANSCRIPT
![Page 1: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/1.jpg)
Programmieren im JAST-Stack
Am Beispiel meiner Bachelorarbeit erläutert
![Page 2: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/2.jpg)
2
Inhalt
Worum ging es in meiner Bachelorarbeit?
Was ist der JAST-Stack?
Welche Spring Projekte habe ich benutzt?
Wie konnte Angular mich unterstützen?
Wie sieht das Ganze dann aus?
Fazit
![Page 3: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/3.jpg)
3
Worum ging es in meiner Bachelorarbeit?
![Page 4: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/4.jpg)
4
Thema meiner Bachelorarbeit
Die Implementierung eines
Urlaubsantragsmanagementsystems
zur Evaluierung der technischen
Konzepte von Spring Boot
Ein System um die Vergabe von
Urlaub zu managen
![Page 5: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/5.jpg)
5
Aktivitätsdiagramm für den Ablauf eines Urlaubsantrages
![Page 6: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/6.jpg)
6
Was soll das Urlaubsantragsmanagementsystem können?
Login mit 4 Rollen unterstützen
User, Vorgesetzter, Personaler,
Admin
Einreichen und Beantworten von
Urlaubsanträgen
Mitarbeiter und Abteilungen
verwalten
Diagramme zur Übersicht
![Page 7: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/7.jpg)
7
Was ist der JAST-Stack?
![Page 8: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/8.jpg)
8
Der JAST-Stack
J : Jakarta EE
A : Angular
S : SQL
T : Tomcat
![Page 9: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/9.jpg)
9
Der JAST-Stack
J : Jakarta EE -> Backend
A : Angular -> Frontend
S : SQL -> relationales DB-System
T : Tomcat -> Web-Server des Backends
Begriff stammt von der GFI
Daher bei Google nicht auffindbar
Verwendet in meiner BA
JT => Spring Boot
A => Angular 6
S => MySQL
![Page 10: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/10.jpg)
10
Welche Spring Projekte habe ich benutzt?
![Page 11: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/11.jpg)
11
Wiederholung
Das Spring-Framework besteht aus
vielen Projekten
> 22 Main-Projects + Community
Projects
Problem:
Auswahl der Versionen bei diesen
Abhängigkeiten
Lösung:
Ist Spring Boot
![Page 12: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/12.jpg)
12
Spring Boot
Spring Boot wählt
kontextabhängig die sinnvollsten
Abhängigkeiten und konfiguriert
diese automatisch
Stellt konfigurierten Tomcat-Server
zur Verfügung
Anwendung direkt lauffähig
![Page 13: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/13.jpg)
13
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 14: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/14.jpg)
15
Spring Data JPA
Baut auf Jakarta EEs JPA auf
(Java Persistance API)
Hilft beim Erstellen von Repositories
![Page 15: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/15.jpg)
16
Spring Data
Abfrage von Daten über:
Standard mit SQL
Query builder mechanism
![Page 16: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/16.jpg)
17
Spring Data
Abfrage von Daten über:
Standard mit SQL
Query builder mechanism
Methode brauch den
Präfix „find….By,
read…By oder get…By“
![Page 17: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/17.jpg)
18
Spring Security
Kümmert sich um die
Authentifizierung und
Autorisierung
![Page 18: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/18.jpg)
19
Spring Security
Kümmert sich um die
Authentifizierung und
Autorisierung
![Page 19: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/19.jpg)
20
Spring Security
Laden der Benutzer inklusive Rollen aus Datenbank
![Page 20: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/20.jpg)
22
Spring Web
Full-Stack Web Entwicklung mit Tomcat und Spring MVC
Hilft bei der Implementierung einer Rest Schnittstelle
Eine Rest Schnittstelle kann Requests empfangen
![Page 21: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/21.jpg)
23
Spring Web
![Page 22: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/22.jpg)
24
Einstellungen
application.properties
![Page 23: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/23.jpg)
25
DI in Spring (Dependency Injection)
Ohne DI
DI in Java
DI in Spring
Speicherung in einer Bean
![Page 24: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/24.jpg)
26
Wie konnte Angular mich unterstützen?
![Page 25: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/25.jpg)
27
Angular
SPA (Single Page Application)
Dynamischen Laden von HTML-
Fragmenten und Daten
Verwendet TypeScript, HTML, CSS
UI-Libs
Z.B. Angular Material,
PrimeNG
![Page 26: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/26.jpg)
28
Aufbau von Angular
Komponenten und Templates
definieren die Angular View
Ein Decorator an einer Komponente
fügt Metadaten hinzu. Mit einem
Zeiger auf das assoziierende
Template, z. B. templateUrl,
template, providers…
Direktiven und Bindungen in
Komponente <-> Templates
modifizieren Views, basierend auf
Programm Data und Logik
DI stellt den Komponenten Services
bereit.
![Page 27: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/27.jpg)
29
DI in Angular (Dependency Injection)
Zu injizierende Klasse
Klasse (Service) mit
@Injectable() erstellen
Klasse die Injektion erhält
Service in Provider übergeben
![Page 28: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/28.jpg)
30
Angular
HttpClient
In Angular 4 neu überarbeitet
Unterstützt beim Senden von
Requests
![Page 29: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/29.jpg)
31
Angular
Routing
![Page 30: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/30.jpg)
32
Angular
Routing
Validierung
![Page 31: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/31.jpg)
33
Angular
Angular CLI (Command Line Interface)
Hilft bei:
Code-Generierung
Erstellen von Komponenten,
Services, …
Starten der Anwendung
Bauen der Anwendung
Etc…
![Page 32: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/32.jpg)
34
Wie sieht das Ganze dann aus?
![Page 33: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/33.jpg)
35
Live-Demo
![Page 34: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/34.jpg)
36
Fazit
Der JAST-Stack ist für die Erstellung
einer solchen Anwendung zu empfehlen
Dabei die Empfehlung Spring statt
Jakarta EE zu verwenden
Die Einarbeitung in Spring und die
vielen Projekte ist anfangs schwierig
Erfahrenen Jakarta EE Entwicklern
dürfte dies deutlich einfacher fallen
Spring sowie Angular gut Dokumentiert
Angular.io ist sehr gut für die
Einarbeitung
Tutorial: Tour of Heroes gibt ersten
Einblick
![Page 35: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/35.jpg)
37
Quellen und Quellcode
https://spring.io/
https://angular.io/
https://blog.angular.io/version-7-of-angular-cli-prompts-virtual-scroll-drag-
and-drop-and-more-c594e22e7b8c
https://docs.spring.io/spring-data/data-
commons/docs/1.6.1.RELEASE/reference/html/repositories.html
https://material.angular.io/
https://www.primefaces.org/primeng/#/
https://bitbucket.int.w3l.de/scm/jast/urlaubsantrag.git
![Page 36: Programmieren im JAST-Stack - W3L · 13 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)](https://reader035.vdocuments.net/reader035/viewer/2022062602/5ee1866dad6a402d666c6020/html5/thumbnails/36.jpg)
38
Vielen Dank! Haben Sie Fragen?
Slupikowski, Christian
Software-Entwickler
Tel. +49 (231) 61 804 - 163
Mail: [email protected]