Middle
Na czym polega różnica między adnotacjami Repository, Component, Controller i Service w Spring?
sobes.tech AI
Odpowiedź od AI
Te adnotacje są adnotacjami stereotypowymi dla komponentów Spring:
@Component: Podstawowa adnotacja dla dowolnego komponentu zarządzanego przez kontener IoC Spring. Zakłada, że klasa jest ogólnym komponentem aplikacji.@Repository: Specjalna adnotacja dla klas wykonujących operacje na danych (DAO). Spring zapewnia dodatkowe możliwości, takie jak automatyczne tłumaczenie wyjątków JDBC na Spring DataAccessException.@Service: Specjalna adnotacja dla klas zawierających logikę biznesową. Wskazuje, że klasa jest usługą na poziomie logiki biznesowej.@Controller: Specjalna adnotacja dla klas używanych jako kontrolery w warstwie web. Zazwyczaj używana w Spring MVC do obsługi przychodzących żądań webowych.
Wszystkie te adnotacje są meta-adnotacjami dla @Component, co oznacza, że klasa oznaczona którąkolwiek z nich będzie uważana przez Spring za komponent. Główna różnica leży w semantyce i specjalistycznej funkcjonalności, którą Spring może zapewnić dla każdej z nich.
// Przykład użycia @Component
@Component
public class MyGenericComponent {
// ogólna funkcjonalność
}
// Przykład użycia @Repository
@Repository
public class UserRepository {
// operacje na bazie danych
}
// Przykład użycia @Service
@Service
public class UserService {
// logika biznesowa
}
// Przykład użycia @Controller
@Controller
public class UserController {
// obsługa żądań webowych
}