Sobes.tech
Junior

Фарқияти байни нишондодҳои @Service, @Repository ва @Controller дар Spring чист?

sobes.tech AI

Ҷавоб аз AI

Инҳо аннотацияҳои Spring мебошанд, ки барои нишон додани синфҳо ҳамчун компонентҳои қабатҳои муайяни барнома истифода мешаванд:

  • @Service: Барои синфҳое, ки мантиқрои бизнесро намояндагӣ мекунанд. Одатан дорои методҳое мебошанд, ки маълумотҳоро, ки аз қабати репозитория гирифта шудаанд, кор мекунанд.
  • @Repository: Барои синфҳое, ки бо қабати нигоҳдории маълумот (масалан, базаи додаҳо) ҳамкорӣ мекунанд. Методи дастрасӣ ба маълумотҳоро пешниҳод мекунанд.
  • @Controller: Барои синфҳое, ки дархостҳои HTTP-ро қабул мекунанд. Одатан дорои методҳое мебошанд, ки намоиш ё маълумотҳоро ҳамчун ҷавоб ба дархост бармегардонанд.

Ҳамаи ин аннотацияҳо стереотипҳо мебошанд, ки @Component-ро васеъ мекунанд, ва имкон медиҳанд, ки Spring ин синфҳоро автоматӣ муайян ва ба сифати биниҳо дар контексти барнома сабт кунад. Афарзҳои асосии онҳо семантикӣ мебошанд, ки нақши синфро дар архитектура нишон медиҳанд. Spring метавонад ин аннотацияҳоро барои татбиқи функсияҳои махсуси қабатҳо истифода барад, масалан:

  • Spring Data JPA автоматӣ синфҳоро бо @Repository ҷустуҷӯ мекунад, то иҷроишҳои репозиторияҳоро эҷод кунад.
  • Spring MVC @Controller-ро барои харитаи дархостҳои URL ба методҳои контроллер истифода мебарад.