Middle
Ի՞նչ է Spring-ում Repository, Component, Controller և Service նշանների տարբերությունը։
sobes.tech AI
Պատասխան AI-ից
Այս նշումները սթերեոտիպային նշումներ են Spring կոմպոնենտների համար՝
@Component: Բազային նշում ցանկացած կոմպոնենտի համար, որը կառավարում է Spring IoC կոնտեյները։ Կարծում է, որ դասը ընդհանուր կոմպոնենտ է ծրագրի համար։@Repository: Մասնակի նշում տվյալների օպերացիաներ իրականացնող դասերի համար (DAO): Spring-ը տրամադրում է լրացուցիչ հնարավորություններ, ինչպիսիք են JDBC արտահայտությունների ավտոմատ թարգմանությունը Spring DataAccessException-ին:@Service: Մասնակի նշում բիզնես-լոգիկա պարունակող դասերի համար։ Նշում է, որ դասը բիզնես-լոգիկայի մակարդակի ծառայություն է։@Controller: Մասնակի նշում՝ որպես վեբ-շերտում օգտագործվող վերահսկիչներ։ Սովորաբար օգտագործվում է Spring MVC-ում՝ ներգրավվող web-հայցերի մշակման համար։
Այս բոլոր նշումները meta-annotations են @Component-ի համար, ինչը նշանակում է, որ ցանկացած դաս, որը նշված է դրանցից որևէով, Spring-ը կհամարի որպես կոմպոնենտ։ Հիմնական տարբերությունը semantic-ով և այն ֆունկցիոնալությամբ է, որ Spring-ը կարող է տրամադրել յուրաքանչյուրի համար։
// Օրինակ `@Component`-ի օգտագործման
@Component
public class MyGenericComponent {
// ընդհանուր ֆունկցիոնալություն
}
// Օրինակ `@Repository`-ի օգտագործման
@Repository
public class UserRepository {
// տվյալների բազայի օպերացիաներ
}
// Օրինակ `@Service`-ի օգտագործման
@Service
public class UserService {
// բիզնես-լոգիկա
}
// Օրինակ `@Controller`-ի օգտագործման
@Controller
public class UserController {
// վեբ-հայցերի մշակում
}