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
}