Sobes.tech
Junior

Na czym polega różnica między adnotacjami @Service, @Repository i @Controller w Spring?

sobes.tech AI

Odpowiedź od AI

To są adnotacje Spring używane do oznaczania klas jako komponentów określonych warstw aplikacji:

  • @Service: Używane dla klas reprezentujących logikę biznesową. Zazwyczaj zawierają metody przetwarzające dane pobrane z warstwy repozytorium.
  • @Repository: Używane dla klas współpracujących z warstwą przechowywania danych (np. baza danych). Zapewniają metody dostępu do danych.
  • @Controller: Używane dla klas obsługujących przychodzące żądania HTTP. Zazwyczaj zawierają metody zwracające widok lub dane w odpowiedzi na żądanie.

Wszystkie te adnotacje są stereotypami rozszerzającymi @Component, umożliwiając Springowi automatyczne wykrywanie i rejestrowanie tych klas jako beanów w kontekście aplikacji. Ich główną różnicą jest semantyczne wskazanie na rolę klasy w architekturze. Spring może używać tych adnotacji do stosowania funkcji specyficznych dla warstw, na przykład:

  • Spring Data JPA automatycznie skanuje klasy z @Repository, aby tworzyć implementacje repozytoriów.
  • Spring MVC używa @Controller do mapowania żądań URL na metody kontrolera.