Sobes.tech
Middle

Spring-də Repository, Component, Controller və Service annotasiyaları arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Bu anotasyonlar Spring komponentləri üçün stereotip anotasyonlardır:

  • @Component: Spring IoC konteyneri tərəfindən idarə olunan hər hansı bir komponent üçün əsas anotasyondur. Sınıfın ümumi tətbiq komponenti olduğunu fərz edir.
  • @Repository: Məlumat əməliyyatları həyata keçirən (DAO) sinflər üçün xüsusi anotasyondur. Spring əlavə imkanlar təmin edir, məsələn, JDBC istisnalarının Spring DataAccessException-ə avtomatik çevrilməsi.
  • @Service: Biznes məntiqini ehtiva edən sinflər üçün xüsusi anotasyondur. Sınıfın biznes məntiq səviyyəsində xidmət olduğunu göstərir.
  • @Controller: Veb qatında istifadə olunan denetleyicilər üçün xüsusi anotasyondur. Adətən Spring MVC-də daxil olan veb sorğularını işləmək üçün istifadə olunur.

Bütün bu anotasyonlar @Component üçün meta-anotasyonlardır; bu, hər hansı birinin anotasiya ilə işarələnmiş sinfin Spring tərəfindən komponent kimi qəbul ediləcəyi deməkdir. Əsas fərq semantika və Spring-in hər biri üçün təmin edə biləcəyi ixtisaslaşdırılmış funksionallıqda yatır.

// @Component istifadə nümunəsi
@Component
public class MyGenericComponent {
    // ümumi funksionallıq
}

// @Repository istifadə nümunəsi
@Repository
public class UserRepository {
    // verilənlər bazası əməliyyatları
}

// @Service istifadə nümunəsi
@Service
public class UserService {
    // biznes məntiqi
}

// @Controller istifadə nümunəsi
@Controller
public class UserController {
    // veb sorğularının işlənməsi
}