Controller und Domain-Klassen werden schnell unübersichtlich, wenn Geschäftsabläufe, Transaktionen und externe Nebenwirkungen nicht in klaren Services gebündelt sind. Gleichzeitig darf eine Service-Schicht nicht zu einer Sammlung beliebiger Hilfsmethoden werden.
Das Seminar leitet Services aus konkreten Anwendungsfällen ab. Transaktionsgrenzen und Fehlerverhalten werden explizit entworfen und mit Tests gegen Teilabbrüche und wiederholte Aufrufe abgesichert.
Inhaltsverzeichnis
- Zielgruppe
- Voraussetzungen
- Lernziele
- Modul 1: Services und fachliche Anwendungslogik
- Modul 2: Spring-Komponenten und Dependency Injection
- Modul 3: Transaktionen, Sessions und Nebenläufigkeit
- Modul 4: Geschäftstransaktionen und Konsistenzmuster
- Modul 5: Messaging, Ereignisse und Entkopplung
- Modul 6: Unit-Tests mit Spock
- Modul 7: Integrationstests mit echter Anwendungskonfiguration
- Praxisprojekt und Übungen
- Arbeitsweise
Zielgruppe
Grails- und Backend-Entwickler sowie Java- oder Spring-Entwickler mit Verantwortung für Geschäftslogik und Persistenz.
Voraussetzungen
Grails-Grundkenntnisse, Erfahrung mit GORM und objektorientierter Entwicklung. Grundwissen zu Datenbanktransaktionen ist erforderlich.
Lernziele
- Service-Verantwortlichkeiten aus fachlichen Anwendungsfällen ableiten.
- Abhängigkeiten und Schnittstellen transparent gestalten.
- Transaktionsgrenzen und Rollback-Verhalten bewusst festlegen.
- Idempotenz und Nebenwirkungen für wiederholbare Abläufe beherrschen.
- Geschäftslogik unabhängig von Controller und Oberfläche testen.
Modul 1: Services und fachliche Anwendungslogik
Services werden als klar definierte fachliche Schnittstellen mit kontrollierten Abhängigkeiten aufgebaut.
- Schritt 1: Service-Verantwortlichkeiten aus Anwendungsfällen ableiten.
- Schritt 2: Abhängigkeiten über Konstruktor- oder Framework-Injection bereitstellen.
- Schritt 3: Transaktionsgrenzen und Rückgabemodelle explizit festlegen.
- Schritt 4: Services mit Unit- und Integrationstests unabhängig von Controllern prüfen.
Modul 2: Spring-Komponenten und Dependency Injection
Grails-Konventionen und Spring-Mechanismen werden so kombiniert, dass die Anwendung transparent und testbar bleibt.
- Schritt 1: Grails-Artefakte und reguläre Spring Beans voneinander abgrenzen.
- Schritt 2: Beans über Annotationen oder programmatische Konfiguration registrieren.
- Schritt 3: Konfigurationseigenschaften typisiert an Komponenten binden.
- Schritt 4: Lebenszyklen, Scopes und Initialisierungsreihenfolgen gezielt prüfen.
Modul 3: Transaktionen, Sessions und Nebenläufigkeit
Transaktionsgrenzen werden aus fachlichen Operationen abgeleitet und nicht dem Zufall einzelner Datenzugriffe überlassen.
- Schritt 1: Transaktionale Service-Methoden und Read-only-Operationen unterscheiden.
- Schritt 2: Flush-Verhalten, Dirty Checking und Session-Lebenszyklus nachvollziehen.
- Schritt 3: Optimistische und pessimistische Sperren für Konfliktsituationen bewerten.
- Schritt 4: Rollback, Wiederholung und Fehlerbehandlung mit Tests überprüfen.
Modul 4: Geschäftstransaktionen und Konsistenzmuster
Komplexe Abläufe werden in robuste, nachvollziehbare Transaktionen und Kompensationsschritte zerlegt.
- Schritt 1: Atomare und verteilte fachliche Operationen unterscheiden.
- Schritt 2: Idempotenz und Wiederholbarkeit für kritische Methoden herstellen.
- Schritt 3: Nebenwirkungen über Ereignisse oder Outbox-ähnliche Muster entkoppeln.
- Schritt 4: Fehlerfälle und Teilabbrüche mit gezielten Tests durchspielen.
Modul 5: Messaging, Ereignisse und Entkopplung
Asynchrone Kommunikation wird mit eindeutiger Zuständigkeit, Nachrichtenschema und Fehlerpfad gestaltet.
- Schritt 1: Ereignis, Befehl und Nachricht fachlich voneinander unterscheiden.
- Schritt 2: Produktion und Verarbeitung von Nachrichten in Services kapseln.
- Schritt 3: Idempotenz, Reihenfolge und doppelte Zustellung berücksichtigen.
- Schritt 4: Fehlerwarteschlange, Wiederholung und manuelle Nachbearbeitung vorsehen.
Modul 6: Unit-Tests mit Spock
Kleine fachliche Einheiten werden mit lesbaren Spezifikationen und klaren Testdoubles geprüft.
- Schritt 1: Given-when-then-Strukturen für Services und Hilfsklassen formulieren.
- Schritt 2: Mocks, Stubs und Spies nur entsprechend ihrer Aufgabe einsetzen.
- Schritt 3: Tabellentests für Varianten und Randfälle entwickeln.
- Schritt 4: Fehlerpfade und Interaktionen ohne unnötigen Framework-Start testen.
Modul 7: Integrationstests mit echter Anwendungskonfiguration
Zusammenspiel von Persistenz, Transaktionen, Spring-Kontext und Webschicht wird realitätsnah überprüft.
- Schritt 1: Integrationsprofil und Testdaten reproduzierbar konfigurieren.
- Schritt 2: Services und GORM gegen eine echte Testdatenbank prüfen.
- Schritt 3: Transaktionsverhalten und Rollback bewusst kontrollieren.
- Schritt 4: Langsame Tests strukturieren und von schnellen Tests trennen.
Praxisprojekt und Übungen
Ein mehrstufiger Geschäftsprozess wird aus einem überladenen Controller in Services überführt. Transaktionsabbruch, doppelte Ausführung und asynchrone Nebenwirkung werden mit Spock- und Integrationstests geprüft.
Arbeitsweise
Kurze fachliche Einführungen wechseln mit Demonstrationen, angeleiteten Implementierungsschritten, selbstständigen Übungen und gemeinsamer Auswertung. Entscheidungen werden im Code, in Tests und in einer knappen technischen Dokumentation nachvollziehbar festgehalten.
Fachbereichsleiter / Leiter der Trainer / Ihre Ansprechpartner
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de
Seminardetails
| Dauer: | 2 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 1.198 zzgl. MwSt. Inhaus: € 3.400 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Grails- und Backend-Entwickler sowie Java- oder Spring-Entwickler mit Verantwortung für Geschäftslogik und Persistenz. |
| Voraussetzungen: | Grails-Grundkenntnisse, Erfahrung mit GORM und objektorientierter Entwicklung. Grundwissen zu Datenbanktransaktionen ist erforderlich. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
