Spring creates objects (beans) and injects their dependencies, so code depends on abstractions, not manual wiring. Constructor injection makes dependencies explicit, supports immutability (`final`), and is easiest to test.
@Service
class UserService {
private final UserRepository repo;
UserService(UserRepository repo) {
this.repo = repo;
}
}