Avatar ·

Qual é a diferença entre @Component, @Repository e @Service no Spring?

Olá! Comecei a estudar Spring e estou tentando entender as anotações de estereótipo. Parece que todas as três (@Component, @Repository, @Service) fazem a mesma coisa — registram um bean no contexto do Spring. Mas por que existem três? Escrevi um serviço simples para trabalhar com usuários. Aqui está meu código: ```java @Component public class UserService { public void saveUser(User user) { System.out.println("User saved: " + user.getName()); } } @Repository public class UserRepository { public void saveToDatabase(User user) { // aqui trabalha com o banco de dados } } @Service public class UserManager { public void processUser(User user) { // lógica de negócios } } ``` Todas as três funcionam, posso injetar qualquer uma delas com @Autowired. Qual é a diferença fundamental então? Será que são apenas nomes diferentes para a mesma coisa? Ou existe alguma mágica que estou perdendo? Vi muitas discussões no Stack Overflow, mas quero uma explicação clara em português com