Sobes.tech
Middle

Mi a különbség a Repository, Component, Controller és Service annotációk között a Springben?

sobes.tech MI

Válasz az MI-től

Ezek a megjegyzések a Spring komponensek sztereotípiás megjegyzései:

  • @Component: Alapértelmezett megjegyzés minden olyan komponenshez, amelyet a Spring IoC konténer kezel. Feltételezi, hogy az osztály egy általános alkalmazási komponens.
  • @Repository: Különleges megjegyzés az adatokkal (DAO) végzett műveleteket végző osztályokhoz. A Spring további lehetőségeket nyújt, például az JDBC kivételek automatikus fordítását Spring DataAccessException-re.
  • @Service: Különleges megjegyzés az üzleti logikát tartalmazó osztályokhoz. Jelzi, hogy az osztály egy üzleti szintű szolgáltatás.
  • @Controller: Különleges megjegyzés a webrétegen használt vezérlőosztályokhoz. Általában a Spring MVC-ben használják bejövő webkérések kezelésére.

Ezek a megjegyzések mind meta-megjegyzések a @Component-hez, ami azt jelenti, hogy bármelyikük által megjelölt osztályt a Spring komponensként fogja kezelni. A fő különbség a szemantika és az általuk nyújtott speciális funkcionalitásban rejlik.

// A @Component használatának példája
@Component
public class MyGenericComponent {
    // általános funkcionalitás
}

// A @Repository használatának példája
@Repository
public class UserRepository {
    // adatbázis műveletek
}

// A @Service használatának példája
@Service
public class UserService {
    // üzleti logika
}

// A @Controller használatának példája
@Controller
public class UserController {
    // webkérések kezelése
}