Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dreischichtarchitektur | Spring Boot Grundlagen
Spring Boot Backend

bookDreischichtarchitektur

Dies dient dazu, spezifische Logik in verschiedene Klassen/Pakete zu trennen, anstatt alles in einer einzigen Klasse zu schreiben.

Die Reihenfolge, in der eine Anfrage verarbeitet wird, ist ControllerServiceRepository. Danach wird die Antwort in umgekehrter Reihenfolge zurückgegeben: Repository -> Service -> Controller. Die Implementierung beginnt mit der Repository-Schicht.

Repository-Ebene

Dies ist die unterste Schicht, in der verarbeitete Daten von der Service-Schicht empfangen und in der Datenbank gespeichert werden.

Diese Klassen werden mit der @Repository-Annotation gekennzeichnet, um dem Spring-Kontext hinzugefügt zu werden.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Beispiel für die Verwendung des Repositorys

Service-Ebene

Hier findet die Kernlogik der Anwendung statt. In Services werden Daten verarbeitet oder modifiziert, bevor sie an die Repository-Schicht weitergegeben werden.

Für Services wird die @Service-Annotation verwendet, die die Klasse als service deklariert, welche die Geschäftslogik enthält.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Beispiel für die Verwendung des Service

Controller-Ebene

Diese Schicht übernimmt die erste Interaktion zwischen Client und Server. Alle Anfragen, die vom Client gesendet werden, treffen hier ein, und sie ist verantwortlich für den Empfang der vom Client bereitgestellten Daten.

Sie verarbeitet eingehende HTTP-Anfragen und gibt HTTP-Antworten zurück. Controller fungieren als "Brücke" zwischen dem Client und der Geschäftslogik.

Auf dieser Ebene werden zwei Annotationen verwendet, um eine Klasse als Controller zu kennzeichnen:

  • @RestController: Deklariert eine Klasse als REST-Controller, der HTTP-Anfragen verarbeitet und Daten im JSON-Format zurückgibt;

  • @Controller: Deklariert eine Klasse als MVC-Controller, der Anfragen verarbeitet und Sichten (z. B. HTML) zurückgibt.

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

Die @GetMapping Annotation legt die URL für eine bestimmte Anfrage fest. Das bedeutet, dass der angegebene Pfad /root zur Domain hinzugefügt wird und im Gegenzug die entsprechende Seite zurückgegeben wird.

Beispiel für die Verwendung des Controllers

Die Thymeleaf-Abhängigkeit aus dem Video

Hier ist der Link zur Thymeleaf-Abhängigkeit im Maven-Repository.

Aber was passiert, wenn dieses Vorgehen nicht befolgt wird?

Technisch gesehen passiert nichts. Selbst wenn die gesamte Geschäftslogik im Controller geschrieben, dort die Verbindung zur Datenbank hergestellt und die Antwort an den Client vom selben Ort zurückgegeben wird, funktioniert alles genauso.

Allerdings wird man sich nach ein paar Wochen kaum noch erinnern, was dort geschrieben wurde, da die gesamte Anwendungslogik an einem Ort liegt, was äußerst unpraktisch ist.

Zusammenfassung

Die Drei-Schichten-Architektur bietet eine klare Trennung der Verantwortlichkeiten zwischen den Schichten controllers, services und repositories, wodurch der Entwicklungsprozess strukturierter und wartungsfreundlicher wird.

Jede Schicht konzentriert sich auf ihre spezifische Aufgabe, was sowohl den Arbeitsablauf als auch das Projektmanagement vereinfacht.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.45

bookDreischichtarchitektur

Swipe um das Menü anzuzeigen

Dies dient dazu, spezifische Logik in verschiedene Klassen/Pakete zu trennen, anstatt alles in einer einzigen Klasse zu schreiben.

Die Reihenfolge, in der eine Anfrage verarbeitet wird, ist ControllerServiceRepository. Danach wird die Antwort in umgekehrter Reihenfolge zurückgegeben: Repository -> Service -> Controller. Die Implementierung beginnt mit der Repository-Schicht.

Repository-Ebene

Dies ist die unterste Schicht, in der verarbeitete Daten von der Service-Schicht empfangen und in der Datenbank gespeichert werden.

Diese Klassen werden mit der @Repository-Annotation gekennzeichnet, um dem Spring-Kontext hinzugefügt zu werden.

Main.java

Main.java

copy
1234
@Repository public class RepositoryLevel { // connect DB }

Beispiel für die Verwendung des Repositorys

Service-Ebene

Hier findet die Kernlogik der Anwendung statt. In Services werden Daten verarbeitet oder modifiziert, bevor sie an die Repository-Schicht weitergegeben werden.

Für Services wird die @Service-Annotation verwendet, die die Klasse als service deklariert, welche die Geschäftslogik enthält.

Main.java

Main.java

copy
1234567
@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }

Beispiel für die Verwendung des Service

Controller-Ebene

Diese Schicht übernimmt die erste Interaktion zwischen Client und Server. Alle Anfragen, die vom Client gesendet werden, treffen hier ein, und sie ist verantwortlich für den Empfang der vom Client bereitgestellten Daten.

Sie verarbeitet eingehende HTTP-Anfragen und gibt HTTP-Antworten zurück. Controller fungieren als "Brücke" zwischen dem Client und der Geschäftslogik.

Auf dieser Ebene werden zwei Annotationen verwendet, um eine Klasse als Controller zu kennzeichnen:

  • @RestController: Deklariert eine Klasse als REST-Controller, der HTTP-Anfragen verarbeitet und Daten im JSON-Format zurückgibt;

  • @Controller: Deklariert eine Klasse als MVC-Controller, der Anfragen verarbeitet und Sichten (z. B. HTML) zurückgibt.

Main.java

Main.java

copy
12345678
@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }

Die @GetMapping Annotation legt die URL für eine bestimmte Anfrage fest. Das bedeutet, dass der angegebene Pfad /root zur Domain hinzugefügt wird und im Gegenzug die entsprechende Seite zurückgegeben wird.

Beispiel für die Verwendung des Controllers

Die Thymeleaf-Abhängigkeit aus dem Video

Hier ist der Link zur Thymeleaf-Abhängigkeit im Maven-Repository.

Aber was passiert, wenn dieses Vorgehen nicht befolgt wird?

Technisch gesehen passiert nichts. Selbst wenn die gesamte Geschäftslogik im Controller geschrieben, dort die Verbindung zur Datenbank hergestellt und die Antwort an den Client vom selben Ort zurückgegeben wird, funktioniert alles genauso.

Allerdings wird man sich nach ein paar Wochen kaum noch erinnern, was dort geschrieben wurde, da die gesamte Anwendungslogik an einem Ort liegt, was äußerst unpraktisch ist.

Zusammenfassung

Die Drei-Schichten-Architektur bietet eine klare Trennung der Verantwortlichkeiten zwischen den Schichten controllers, services und repositories, wodurch der Entwicklungsprozess strukturierter und wartungsfreundlicher wird.

Jede Schicht konzentriert sich auf ihre spezifische Aufgabe, was sowohl den Arbeitsablauf als auch das Projektmanagement vereinfacht.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
some-alt