Différence entre @Component, @Repository et @Service dans Spring Framework
Bonjour à tous ! Je suis un développeur Java débutant, j'apprends Spring Framework. J'écris ma première application — une simple boutique en ligne. J'ai plusieurs classes : ProductService, ProductRepository et ProductController. Je sais qu'elles doivent toutes être des beans Spring, mais je ne comprends pas quelle annotation utiliser pour quelle classe.
Partout on écrit qu'on peut simplement mettre @Component sur tout, mais j'ai vu que les développeurs expérimentés utilisent @Repository pour la couche DAO et @Service pour les services. Quelle est la différence ? J'ai essayé d'écrire comme ça :
```java
@Component
public class ProductRepository {
public List findAll() {
// ici travail avec la BD
}
}
@Service
public class ProductService {
@Autowired
private ProductRepository repository;
}
@Controller
public class ProductController {
@Autowired
private ProductService service;
}
```
Tout fonctionne. Mais si je remplace @Service par @Component — ça fonctionne aussi. Et si je remplace @Repository par @Component — pareil. Alors pourquoi