Dependency Injection Lifetimes
Go deep on Dependency Injection Lifetimes: edge cases, scalability limits, and how you'd evolve the solution over 2 years.
Answers use simple, clear English.
Quick interview answer
Singleton one instance app-wide; Scoped per request (DbContext); Transient new each resolve. Captive dependency: don't inject Scoped into Singleton.
Detailed answer
Singleton one instance app-wide; Scoped per request (DbContext); Transient new each resolve. Captive dependency: don't inject Scoped into Singleton. Scale limits often appear in: Wrong lifetime causes stale state or thread-safety bugs.. Evolution levers: Constructor injection only in controllers; validate scopes at startup in dev.. Anchor example: Register EF DbContext as Scoped; IEmailSender as Transient; IOptionsMonitor as Singleton. Core: Singleton one instance app-wide; Scoped per request (DbContext); Transient new each resolve. Captive dependency: don't inject Scoped into Singleton. Real-time example: Register EF DbContext as Scoped; IEmailSender as Transient; IOptionsMonitor as Singleton. Pros: Built-in container; testable via constructor injection. Cons: Wrong lifetime causes stale state or thread-safety bugs. Common mistakes: Singleton holding mutable Scoped service; resolving Scoped from root provider. Best practices: Constructor injection only in controllers; validate scopes at startup in dev. Audience level: Architect.
Full explanation
Singleton one instance app-wide; Scoped per request (DbContext); Transient new each resolve. Captive dependency: don't inject Scoped into Singleton.
Real example & use case
Register EF DbContext as Scoped; IEmailSender as Transient; IOptionsMonitor as Singleton.
Pros & cons
Pros: Built-in container; testable via constructor injection. Cons: Wrong lifetime causes stale state or thread-safety bugs.
Common mistakes
Singleton holding mutable Scoped service; resolving Scoped from root provider.
Best practices
Constructor injection only in controllers; validate scopes at startup in dev.
Follow-up questions
- How would you test Dependency Injection Lifetimes?
- What metrics prove Dependency Injection Lifetimes is healthy in prod?
- How does Dependency Injection Lifetimes change at 10× traffic?