Sobes.tech
Middle

Koja je razlika između anotacija Repository, Component, Controller i Service u Spring-u?

sobes.tech АИ

Одговор од АИ

Ove anotacije su stereotipne anotacije za Spring komponente:

  • @Component: Osnovna anotacija za bilo koju komponentu koju upravlja Spring IoC kontejner. Pretpostavlja da je klasa opšti komponent aplikacije.
  • @Repository: Specijalna anotacija za klase koje obavljaju operacije sa podacima (DAO). Spring pruža dodatne mogućnosti, kao što je automatski prevod JDBC izuzetaka u Spring DataAccessException.
  • @Service: Specijalna anotacija za klase koje sadrže poslovnu logiku. Ukazuje da je klasa servis na nivou poslovne logike.
  • @Controller: Specijalna anotacija za klase koje se koriste kao kontroleri u web sloju. Obično se koristi u Spring MVC za obradu dolaznih web zahteva.

Sve ove anotacije su meta-anotacije za @Component, što znači da će svaka klasa označena bilo kojom od njih biti smatrana od strane Spring-a kao komponenta. Glavna razlika leži u semantici i specijalizovanoj funkcionalnosti koju Spring može pružiti za svaku od njih.

// Primer korišćenja @Component
@Component
public class MyGenericComponent {
    // opšta funkcionalnost
}

// Primer korišćenja @Repository
@Repository
public class UserRepository {
    // operacije sa bazom podataka
}

// Primer korišćenja @Service
@Service
public class UserService {
    // poslovna logika
}

// Primer korišćenja @Controller
@Controller
public class UserController {
    // obrada web zahteva
}