# Constructor dependency injection **Beginner → Intermediate.** Annotations, explicit targets, collections. Annotate a constructor parameter. Melder builds the graph. ```python class ReportService: def __init__(self, database: Database) -> None: # ← injected self.database = database book.bind(spell=Database, existence="unique") book.bind(spell=ReportService, existence="unique") conduit = book.conjure() report = conduit.meld("ReportService") ``` ## Runnable examples - [Constructor di by annotation](../examples/intermediate/15-constructor-di-by-annotation.md) — Intermediate 15 - [Typed melding](../examples/beginner/16-typed-melding.md) — Beginner 16 [All beginner examples](../examples/beginner/index.md) · [Level contents](index.md) · [Full contents](../contents.md) [Canonical page source](https://github.com/Synaptic724/melder/blob/a30a754d0bb61db0b142936010cdb82cffecec6f/README.md)