Avatar ·

الفرق بين @Component و @Repository و @Service في إطار Spring

مرحباً بالجميع! أنا مطور Java مبتدئ، أدرس إطار Spring. أكتب تطبيقي الأول - متجر إنترنت بسيط. لدي عدة كلاسات: ProductService و ProductRepository و ProductController. أعلم أن جميعها يجب أن تكون حبوب Spring، لكنني لا أفهم أي تعليق يجب استخدامه لأي كلاس. في كل مكان يكتبون أنه يمكن ببساطة وضع @Component على كل شيء، لكنني رأيت أن المطورين ذوي الخبرة يستخدمون @Repository لطبقة DAO و @Service للخدمات. ما الفرق؟ جربت الكتابة هكذا: ```java @Component public class ProductRepository { public List findAll() { // هنا العمل مع قاعدة البيانات } } @Service public class ProductService { @Autowired private ProductRepository repository; } @Controller public class ProductController { @Autowired private ProductService service; } ``` كل شيء يعمل. لكن إذا استبدلت @Service بـ @Component - يعمل أيضاً. وإذا استبدلت @Repository بـ @Component - يعمل أيضاً. فلماذا إذن؟