Programmieren im JAST-Stack
Am Beispiel meiner Bachelorarbeit erläutert
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
3
Worum ging es in meiner Bachelorarbeit?
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
5
Aktivitätsdiagramm für den Ablauf eines Urlaubsantrages
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
7
Was ist der JAST-Stack?
8
Der JAST-Stack
J : Jakarta EE
A : Angular
S : SQL
T : Tomcat
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
10
Welche Spring Projekte habe ich benutzt?
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
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
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:
15
Spring Data JPA
Baut auf Jakarta EEs JPA auf
(Java Persistance API)
Hilft beim Erstellen von Repositories
16
Spring Data
Abfrage von Daten über:
Standard mit SQL
Query builder mechanism
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“
18
Spring Security
Kümmert sich um die
Authentifizierung und
Autorisierung
19
Spring Security
Kümmert sich um die
Authentifizierung und
Autorisierung
20
Spring Security
Laden der Benutzer inklusive Rollen aus Datenbank
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
23
Spring Web
24
Einstellungen
application.properties
25
DI in Spring (Dependency Injection)
Ohne DI
DI in Java
DI in Spring
Speicherung in einer Bean
26
Wie konnte Angular mich unterstützen?
27
Angular
SPA (Single Page Application)
Dynamischen Laden von HTML-
Fragmenten und Daten
Verwendet TypeScript, HTML, CSS
UI-Libs
Z.B. Angular Material,
PrimeNG
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.
29
DI in Angular (Dependency Injection)
Zu injizierende Klasse
Klasse (Service) mit
@Injectable() erstellen
Klasse die Injektion erhält
Service in Provider übergeben
30
Angular
HttpClient
In Angular 4 neu überarbeitet
Unterstützt beim Senden von
Requests
31
Angular
Routing
32
Angular
Routing
Validierung
33
Angular
Angular CLI (Command Line Interface)
Hilft bei:
Code-Generierung
Erstellen von Komponenten,
Services, …
Starten der Anwendung
Bauen der Anwendung
Etc…
34
Wie sieht das Ganze dann aus?
35
Live-Demo
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
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
38
Vielen Dank! Haben Sie Fragen?
Slupikowski, Christian
Software-Entwickler
Tel. +49 (231) 61 804 - 163
Mail: [email protected]