Sobes.tech
Middle

Spring'da Repository, Component, Controller va Service annotatsiyalari orasidagi farq nima?

sobes.tech AI

AIdan javob

Bu anotasyonlar Spring komponentlari uchun stereotip anotatsiyalaridir:

  • @Component: Spring IoC konteyneri tomonidan boshqariladigan har qanday komponent uchun asosiy anotatsiya. Klass umumiy ilova komponenti deb hisoblanadi.
  • @Repository: Ma'lumotlar bilan ishlovchi (DAO) sinflar uchun maxsus anotatsiya. Spring qo'shimcha imkoniyatlar, masalan, JDBC istisnolarini Spring DataAccessException ga avtomatik tarjima qilishni ta'minlaydi.
  • @Service: Biznes mantiqini o'z ichiga olgan sinflar uchun maxsus anotatsiya. Klass biznes mantiq darajasidagi xizmat deb belgilaydi.
  • @Controller: Veb qatlamida controller sifatida ishlatiladigan sinflar uchun maxsus anotatsiya. Odatda Spring MVC da kiruvchi veb so'rovlarni boshqarish uchun ishlatiladi.

Ushbu barcha anotatsiyalar @Component uchun meta-anotatsiyalar bo'lib, ular bilan belgilangan har qanday sinf Spring tomonidan komponent sifatida qabul qilinadi. Asosiy farq semantika va Spring har biri uchun taqdim eta oladigan maxsus funksionallikda yotadi.

// @Component dan foydalanish misoli
@Component
public class MyGenericComponent {
    // umumiy funksionallik
}

// @Repository dan foydalanish misoli
@Repository
public class UserRepository {
    // ma'lumotlar bazasi operatsiyalari
}

// @Service dan foydalanish misoli
@Service
public class UserService {
    // biznes mantiq
}

// @Controller dan foydalanish misoli
@Controller
public class UserController {
    // veb so'rovlarini boshqarish
}