Sobes.tech
Middle

Kuo skiriasi Spring anotacijos Repository, Component, Controller ir Service?

sobes.tech AI

Atsakymas iš AI

Šios anotacijos yra stereotipinės anotacijos Spring komponentams:

  • @Component: Pagrindinė anotacija bet kuriai komponentai, kurią valdo Spring IoC konteineris. Laiko, kad klasė yra bendras programos komponentas.
  • @Repository: Speciali anotacija duomenų operacijoms (DAO) vykdyti klasėse. Spring teikia papildomas galimybes, tokias kaip JDBC išimčių automatinis vertimas į Spring DataAccessException.
  • @Service: Speciali anotacija verslo logiką turinčioms klasėms. Nurodo, kad klasė yra verslo logikos lygio paslauga.
  • @Controller: Speciali anotacija, naudojama kaip valdikliai web sluoksnyje. Paprastai naudojama Spring MVC, tvarkyti įeinančius web užklausas.

Visos šios anotacijos yra meta-anotacijos @Component, tai reiškia, kad bet kuri klasė, pažymėta bet kuria iš jų, bus laikoma Spring kaip komponentas. Pagrindinis skirtumas yra semantikoje ir specializuotoje funkcionalumo, kurį Spring gali suteikti kiekvienai iš jų.

// Pavyzdys, kaip naudoti `@Component`
@Component
public class MyGenericComponent {
    // bendros funkcijos
}

// Pavyzdys, kaip naudoti `@Repository`
@Repository
public class UserRepository {
    // duomenų bazės operacijos
}

// Pavyzdys, kaip naudoti `@Service`
@Service
public class UserService {
    // verslo logika
}

// Pavyzdys, kaip naudoti `@Controller`
@Controller
public class UserController {
    // web užklausų apdorojimas
}