Please enable JavaScript.
Coggle requires JavaScript to display documents.
Architecting Web Apps with Spring (Testing (Unit Test (Michael Feathers:…
Architecting Web Apps with
Spring
Design Ansätze
Physical Design
Database
Repositories
Entities
Eigenes Projekt
Services
Beispiele
Article Service
Blog Service
Auth Service
Alle Services die in Verbindung mit der DB stehen
Eigenes Projekt
Web
Controller
Views
Eigenes Projekt
Design das die Charakteristik des physischen System wiederspiegelt
Vertical
Code Separation :pencil2:
Benefits
Separtion of Concerns
Klare Verantwortung
Unterteilung des Betriebs
Leichtes Mapping von Layer zu Server
Leichter zu verstehen
'Jeder macht es so'
Logical Design
Design das die App nach Features strukturiert
Feature
Jedes Feature ein eigenes Projekt
Besteht typischerweise aus 1 oder mehreren Jar-Files
Beispiele
Blog Feature
Articles Feature
Cross Project Features
Web Tier
Deployment auf verschiedene Hardware
Database Entities
Primary Key
Foreign Keys
Relations
Aufteilung in Features notwendig
Nicht alles ist genau einem Feature zuzuordnen :warning:
Logical Design ersteckt sich über alle Aspekte des Physical Designs
Horizontal
Code Separation :pencil2:
Benefits
Better
Seperation of Concerns
Verantwortung nach Feature
Developer arbeiten nur an einem Teil des Codes
Leichter zu Verwalten (bspw. Source Control)
Leicht die gesamte Funktionalität zu sehen
Drawbacks
Einige Tiers sind schwer zu trennen
Schwere Unterteilung der physischen Layer
Ist kein Standardansatz
Kultur
Akzeptanz
Build Tool
Gradle
Eigene Sprache
domänenspezifisch
basiert auf Groovy
DSL
Managing DB Layer
Java-based Migrations
Snippets writen in SQL or Java
to change schema
like Ruby ActiveRecord
creates tables
Flyway
https://flywaydb.org/getstarted/
Open Source Project
Using Repository Classes to access DB
Building initial Component
Eine Component enthält
Service
Repository
data access code
Test
Sie enthält
nicht
...
Entities
eigenes Projekt
Web Tier Code
eignes Projekt
Testing
Unit Test
komplett
unabhängig
Michael Feathers
: es ist kein Unit Test wenn... :warning:
eine Verbindung zur DB aufgebaut wird
wenn eine Netzwerkkommunikation stattfindet
es nicht gemeinsam mit anderen Unit Tests ausgeführt werden kann
spezielle Konfigurationen der Umgebung notwendig sind
Integration Test
Spring Profile erlaubt den Wechsel zwischen Test und Production
Mocking
Tool Mockito
Securing
Add Authentication and Authorization