الفرق بين @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 - يعمل أيضاً. فلماذا إذن؟