¿Cuál es la diferencia entre @Component, @Repository y @Service en Spring?
¡Hola! Empecé a estudiar Spring y estoy tratando de entender las anotaciones de estereotipos. Parece que las tres (@Component, @Repository, @Service) hacen lo mismo: registran un bean en el contexto de Spring. Pero, ¿por qué hay tres?
Escribí un servicio simple para trabajar con usuarios. Aquí está mi 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) {
// aquí se trabaja con la base de datos
}
}
@Service
public class UserManager {
public void processUser(User user) {
// lógica de negocio
}
}
```
Las tres funcionan, puedo inyectar cualquiera de ellas mediante @Autowired. Entonces, ¿cuál es la diferencia fundamental? ¿Quizás son solo nombres diferentes para lo mismo? ¿O hay alguna magia que me estoy perdiendo? Vi muchas discusiones en Stack Overflow, pero me gustaría obtener una explicación clara.