Avatar ·

Diferença entre @Component, @Repository e @Service no Spring Framework

Olá a todos! Sou um desenvolvedor Java iniciante, estudando Spring Framework. Estou escrevendo meu primeiro aplicativo — uma loja online simples. Tenho várias classes: ProductService, ProductRepository e ProductController. Sei que todas elas devem ser beans do Spring, mas não entendo qual anotação usar para qual classe. Em todos os lugares escrevem que você pode simplesmente colocar @Component em tudo, mas vi que desenvolvedores experientes usam @Repository para a camada DAO e @Service para serviços. Qual é a diferença? Tentei escrever assim: ```java @Component public class ProductRepository { public List findAll() { // trabalho com o banco de dados aqui } } @Service public class ProductService { @Autowired private ProductRepository repository; } @Controller public class ProductController { @Autowired private ProductService service; } ``` Tudo funciona. Mas se eu substituir @Service por @Component — também funciona. E se substituir @Repository por @Component — também. Então por que