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