This document describes the Dependency Injection (DI) patterns used in tdoc-crawler.
## Overview
The project uses a lightweight DI container (`ServiceContainer`) for centralized service lifecycle management. This is optional - existing code continues to work without changes.
## ServiceContainer
The `ServiceContainer` provides centralized access to core services:
```python
fromtdoc_crawler.diimportServiceContainer
# Create container (optional cache directory)
container=ServiceContainer()
# Use services
session=container.get_session()
withcontainer.get_tdoc_db()asdb:
# Business logic
pass
# Cleanup
container.close()
# Or use context manager
withServiceContainer()ascontainer:
# Use services
pass
```
## CLI Integration
The CLI supports DI mode via the `--di-mode` flag: