Dependency Inversion ‐ (DIP)
Depende de abstracciones (interfaces), no de implementaciones concretas.
Spring IoC
maneja las dependencias automáticamente.
// ❌ UserService depende directamente de implementación concretapublic class UserService { private UserRepository repository = new MySQLUserRepository(); // ❌ Hard dependency
public void createUser(User user) { repository.save(user); }}
// ✅ Depende de abstracciónpublic interface UserRepository { void save(User user);}
@Servicepublic class UserService { private final UserRepository repository; // ✅ Abstraction
public UserService(UserRepository repository) { // ✅ Constructor injection this.repository = repository; }}
@Repositorypublic class MySQLUserRepository implements UserRepository { // Implementation details}