Using component abstractions for dependency injection.