Sobes.tech
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
}