Programmieren im JAST-Stack - W3L · 13 Runtime: Spring Boot 2.0.3 und Spring Core 5.0.7...

Preview:

Citation preview

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: c.slupikowski@w3l.de