Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Trelagsarkitektur | Spring Boot-Grundlæggende
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Spring Boot Backend

bookTrelagsarkitektur

Dette gøres for at adskille specifik logik i forskellige klasser/pakker i stedet for at skrive alt i en enkelt klasse.

Den rækkefølge, en forespørgsel behandles i, er ControllerServiceRepository. Herefter returneres svaret i omvendt rækkefølge: Repository -> Service -> Controller. Vi starter implementeringen med Repository-laget.

Repository-niveau

Dette er det laveste lag, hvor vi modtager behandlede data fra Service-laget og gemmer dem i vores database.

Disse klasser er markeret med @Repository-annotationen for at blive tilføjet til Spring-konteksten.

Main.java

Main.java

copy

Eksempel på brug af Repository

Serviceniveau

Her foregår kerne-logikken i applikationen. I services håndterer eller modificerer vi data, før vi sender det videre til repository-laget.

For services anvender vi @Service annotationen, som deklarerer klassen som en service, der indeholder forretningslogikken.

Main.java

Main.java

copy

Eksempel på brug af Service

Controller-niveau

Dette lag håndterer den indledende interaktion mellem klient og server. Alle forespørgsler sendt fra klienten ankommer her, og det er ansvarligt for at modtage de data, klienten leverer.

Det behandler indkommende HTTP-forespørgsler og returnerer HTTP-svar. Controllere fungerer som en "bro" mellem klienten og forretningslogikken.

På dette niveau anvendes der to annoteringer til at udpege en klasse som en controller:

  • @RestController: Deklarerer en klasse som en REST-controller, der håndterer HTTP-forespørgsler og returnerer data i JSON-format;

  • @Controller: Deklarerer en klasse som en MVC-controller, der håndterer forespørgsler og returnerer views (f.eks. HTML).

Main.java

Main.java

copy

@GetMapping annotationen angiver URL'en for en given forespørgsel. Dette betyder, at vi tilføjer den specificerede sti /root til domænet, og til gengæld modtager vi den tilsvarende side.

Eksempel på brug af Controller

Thymeleaf-afhængigheden fra videoen

Her er linket til Thymeleaf-afhængigheden i Maven repository.

Men hvad sker der, hvis du ikke følger denne tilgang?

Teknisk set sker der intet. Selv hvis du skriver al forretningslogik i controlleren, opretter forbindelse til databasen der og returnerer svaret til klienten fra samme sted, vil alt fungere på samme måde.

Dog vil du sandsynligvis ikke kunne huske, hvad du skrev der efter et par uger, fordi al applikationslogik vil være samlet ét sted, hvilket er utroligt upraktisk.

Resumé

Tre-lags arkitekturen giver en tydelig adskillelse af ansvar mellem lagene controllers, services og repositories, hvilket gør udviklingsprocessen mere organiseret og nemmere at vedligeholde.

Hvert lag fokuserer på sin specifikke opgave, hvilket forenkler både arbejdsgang og projektstyring.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain the main responsibilities of each layer in the three-tier architecture?

How does the data flow between the controller, service, and repository layers?

Why is it important to separate logic into different layers instead of using a single class?

bookTrelagsarkitektur

Stryg for at vise menuen

Dette gøres for at adskille specifik logik i forskellige klasser/pakker i stedet for at skrive alt i en enkelt klasse.

Den rækkefølge, en forespørgsel behandles i, er ControllerServiceRepository. Herefter returneres svaret i omvendt rækkefølge: Repository -> Service -> Controller. Vi starter implementeringen med Repository-laget.

Repository-niveau

Dette er det laveste lag, hvor vi modtager behandlede data fra Service-laget og gemmer dem i vores database.

Disse klasser er markeret med @Repository-annotationen for at blive tilføjet til Spring-konteksten.

Main.java

Main.java

copy

Eksempel på brug af Repository

Serviceniveau

Her foregår kerne-logikken i applikationen. I services håndterer eller modificerer vi data, før vi sender det videre til repository-laget.

For services anvender vi @Service annotationen, som deklarerer klassen som en service, der indeholder forretningslogikken.

Main.java

Main.java

copy

Eksempel på brug af Service

Controller-niveau

Dette lag håndterer den indledende interaktion mellem klient og server. Alle forespørgsler sendt fra klienten ankommer her, og det er ansvarligt for at modtage de data, klienten leverer.

Det behandler indkommende HTTP-forespørgsler og returnerer HTTP-svar. Controllere fungerer som en "bro" mellem klienten og forretningslogikken.

På dette niveau anvendes der to annoteringer til at udpege en klasse som en controller:

  • @RestController: Deklarerer en klasse som en REST-controller, der håndterer HTTP-forespørgsler og returnerer data i JSON-format;

  • @Controller: Deklarerer en klasse som en MVC-controller, der håndterer forespørgsler og returnerer views (f.eks. HTML).

Main.java

Main.java

copy

@GetMapping annotationen angiver URL'en for en given forespørgsel. Dette betyder, at vi tilføjer den specificerede sti /root til domænet, og til gengæld modtager vi den tilsvarende side.

Eksempel på brug af Controller

Thymeleaf-afhængigheden fra videoen

Her er linket til Thymeleaf-afhængigheden i Maven repository.

Men hvad sker der, hvis du ikke følger denne tilgang?

Teknisk set sker der intet. Selv hvis du skriver al forretningslogik i controlleren, opretter forbindelse til databasen der og returnerer svaret til klienten fra samme sted, vil alt fungere på samme måde.

Dog vil du sandsynligvis ikke kunne huske, hvad du skrev der efter et par uger, fordi al applikationslogik vil være samlet ét sted, hvilket er utroligt upraktisk.

Resumé

Tre-lags arkitekturen giver en tydelig adskillelse af ansvar mellem lagene controllers, services og repositories, hvilket gør udviklingsprocessen mere organiseret og nemmere at vedligeholde.

Hvert lag fokuserer på sin specifikke opgave, hvilket forenkler både arbejdsgang og projektstyring.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
some-alt