Middle
Aký je rozdiel medzi anotáciami Repository, Component, Controller a Service vo Springu?
sobes.tech AI
Odpoveď od AI
Tieto anotácie sú stereotypné anotácie pre komponenty Spring:
@Component: Základná anotácia pre akúkoľvek súčasť spravovanú kontajnerom Spring IoC. Predpokladá, že trieda je všeobecnou súčasťou aplikácie.@Repository: Špeciálna anotácia pre triedy, ktoré vykonávajú operácie s dátami (DAO). Spring poskytuje ďalšie možnosti, ako je automatický preklad JDBC výnimiek na Spring DataAccessException.@Service: Špeciálna anotácia pre triedy obsahujúce biznis logiku. Uvádza, že trieda je službou na úrovni biznis logiky.@Controller: Špeciálna anotácia pre triedy používané ako kontroléry v vrstve webu. Zvyčajne sa používa v Spring MVC na spracovanie prichádzajúcich webových požiadaviek.
Všetky tieto anotácie sú meta-anotácie pre @Component, čo znamená, že akákoľvek trieda označená ktoroukoľvek z nich bude považovaná Springom za komponent. Hlavný rozdiel spočíva v sémantike a špecializovanej funkčnosti, ktorú Spring môže poskytnúť pre každú z nich.
// Príklad použitia @Component
@Component
public class MyGenericComponent {
// všeobecná funkčnosť
}
// Príklad použitia @Repository
@Repository
public class UserRepository {
// operácie s databázou
}
// Príklad použitia @Service
@Service
public class UserService {
// biznis logika
}
// Príklad použitia @Controller
@Controller
public class UserController {
// spracovanie webových požiadaviek
}