Dreischichtarchitektur
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 Controller → Service → Repository. 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
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
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
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.45
Dreischichtarchitektur
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 Controller → Service → Repository. 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
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
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
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.
Danke für Ihr Feedback!