Kursinhalt
Spring Boot Backend
Spring Boot Backend
Spring MVC
Warum Sie Spring MVC benötigen
Spring MVC hilft, eine Webanwendung zu organisieren, indem es das Prinzip der Trennung von Anliegen befolgt, was die Entwicklung, das Testen und die Wartung von Code erleichtert. Es bietet ein Framework zum Erstellen von Webseiten und zum Bearbeiten von Benutzeranfragen sowie zur Integration mit Geschäftslogik und Datenbanken.
In unserer Anwendung nutzen wir eine Drei-Schichten-Architektur, um die Logik in unterschiedliche Module zu trennen. Wir haben die repository
, service
und controller
Schichten. Diese Trennung erleichtert die Wartung und das Testen der Anwendung.
Wichtige Anmerkungen und ihre Rolle
Für jede Schicht haben wir spezifische Anmerkungen, die für Spring unerlässlich sind, um Komponenten im Anwendungskontext automatisch zu erkennen und zu registrieren (wir werden später besprechen, was das bedeutet). Dies hilft, eine sauberere Architektur zu bewahren und verbessert die Lesbarkeit des Codes.
Repository Layer Annotation
Die @Repository
Annotation wird verwendet, um eine Klasse zu kennzeichnen, die mit der Datenbank interagiert. Diese Klassen enthalten typischerweise Methoden zur Durchführung von CRUD-Operationen (Create, Read, Update, Delete).
UserRepository
@Repository public class UserRepository { // Method to find a user by their ID public User findById(Long id) { // Logic to retrieve the user from the database } }
In diesem Beispiel ist UserRepository
als Repository markiert, was es Spring ermöglicht, datenbankbezogene Ausnahmen zu behandeln und es automatisch in die Anwendung zu integrieren.
Service Layer Annotation
Die @Service
Annotation wird verwendet, um eine Klasse als Komponente der Geschäftslogik zu kennzeichnen. Diese Klassen enthalten Methoden, die die Geschäftsregeln und Operationen der Anwendung implementieren.
UserService
@Service public class UserService { // Method to retrieve a user by their ID public User getUserById(Long id) { // Logic to get the user by ID } }
Die @Service
Annotation zeigt an, dass diese Klasse die Geschäftslogik der Anwendung enthält, was es einfach macht, sie in anderen Teilen der Anwendung zu verwenden. Dies vereinfacht die Entwicklung, da Sie nicht manuell Instanzen dieser Klasse erstellen müssen — Spring übernimmt das für Sie.
Controller-Schicht-Annotation
Da die Controller-Schicht als Interaktionspunkt zwischen dem Client und unserer Anwendung dient, müssen wir Endpunkte einrichten, damit Clients darauf zugreifen können. Dies beinhaltet das Zuordnen spezifischer URLs zu jeder Methode, sodass Clients direkt mit diesen Methoden interagieren können.
Um dies zu erreichen, müssen wir die Klasse als @Controller
annotieren und eine Methode definieren, die als Anfrage-Handler fungiert.
Main
@Controller public class HomeController { @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { // code } }
Die @RequestMapping
Annotation wird verwendet, um HTTP-Anfragen mit spezifischen Methoden im Controller zu verknüpfen. Sie hilft dabei, festzulegen, auf welche URL-Muster und Arten von Anfragen (wie GET
oder POST
) eine Methode reagieren soll. Zum Beispiel wird in diesem Fall die home()
Methode auf GET
Anfragen an die Root-URL reagieren.
Wenn ein Benutzer example.com/
besucht, sendet sein Browser eine HTTP GET
-Anfrage an den Server, die die Spring-Anwendung erreicht. Das Spring-Framework findet die passende @RequestMapping
im HomeController
, ruft die home()
Methode auf, um die Anfrage zu bearbeiten, und sendet dann die entsprechende Antwort zurück an den Browser des Benutzers.
Es gibt Annotationen, die eine präzisere Zuordnung für den Typ der Anfragemethode bieten, wie @GetMapping
, @PostMapping
, @DeleteMapping
und so weiter. In ihren Attributen geben Sie einfach die URL an, die verwendet werden kann, um sie zu erreichen.
Main
@Controller public class HomeController { @GetMapping("/home") public String home() { // code } }
In diesem Beispiel, wenn wir auf die URL /home
zugreifen, werden wir zur home()
Methode NUR weitergeleitet, wenn es sich um eine GET-Anfrage handelt. Wenn ein anderer Typ von Anfragemethode verwendet wird, antwortet der Server mit einem 404 Not Found
Fehler für diese URL.
@RequestParam
Was sind URL-Anforderungsparameter? Dies sind die Parameter, die nach dem Fragezeichen in der URL erscheinen. Zum Beispiel, wenn wir die Adresse -> example.com/home?name=Alex
(Schlüssel = name
, Wert = Alex
) haben, können wir den Parameter (name) direkt in der welcomeUser()
Methode abrufen.
Main
@Controller public class WelcomeController { @GetMapping("/home") public String welcomeUser(@RequestParam(name = "name") String name) { // code } }
Hier wird der Parameter name
aus der URL (/home?name=Alex
) extrahiert und an die Methode welcomeUser()
übergeben.
Sie können auch mehr als einen Parameter extrahieren, nicht nur einen einzelnen. Alle Parameter in der URL sollten durch das &
-Symbol getrennt werden. Zum Beispiel: example.com/home?name=Alex&age=20
.
Main
@GetMapping("/home") public String getUserInfo(@RequestParam String name, @RequestParam int age) { // Logic to handle the request using 'name' and 'age' parameters return "User Name: " + name + ", Age: " + age; }
In diesem Beispiel kann auf den Endpunkt /home
mit einer URL wie example.com/home?name=Alex&age=20
zugegriffen werden, wobei name
und age
die an die Methode übergebenen Parameter sind.
@PathVariable
In Spring MVC wird die @PathVariable
Annotation verwendet, um eine Variable in der URL direkt an einen Methodenparameter zu binden. Sie ermöglicht es, dynamische Werte aus der URL zu erfassen und innerhalb der Methode zu verwenden.
Wenn Sie eine URL dynamisch festlegen müssen, indem Sie einen Wert direkt in der URL selbst übergeben, können Sie die @PathVariable
Annotation verwenden.
Zum Beispiel, wenn Sie ein URL-Muster wie /users/{id}
haben, können Sie @PathVariable
verwenden, um auf den {id}
-Teil der URL zuzugreifen und ihn als Parameter an Ihre Methode zu übergeben.
Main
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long userId) { // code } }
In diesem Beispiel wird id
aus der URL (/user/123
) extrahiert und an die getUser()
-Methode übergeben, wobei der Wert 123
dem userId
-Parameter zugewiesen wird.
Diese Annotationen helfen Entwicklern, die HTTP-Anfrage-Verarbeitung einfach zu konfigurieren, Daten an Objekte zu binden und Antworten zu verwalten, was die Lesbarkeit und Wartbarkeit des Codes verbessert.
Zusammenfassung
Spring MVC vereinfacht die Entwicklung von Webanwendungen, indem es die Anfragebearbeitung, die Anwendungslogik und das Rendering der Ansicht trennt. Controller, die mit der @Controller
- oder @RestController
-Annotation markiert sind, bearbeiten Anfragen und liefern Daten zur Anzeige.
1. Was bewirkt die @Controller
-Annotation in Spring MVC?
2. Welche Annotationsmethode wird verwendet, um GET requests
in Spring MVC zu bearbeiten?
Danke für Ihr Feedback!