NOTE
Using Spring IoC
Dependency injection through components/configuration with constructor injection, explicit dependencies, and container-managed lifecycle.
This is a historical learning note and may contain outdated or incomplete understanding.
Spring IoC manages object construction, dependency wiring, scope, and lifecycle.
Prefer constructor injection for required dependencies: it makes object requirements explicit, supports immutability/testing, and surfaces dependency cycles immediately. Use configuration/component scanning according to project conventions, but keep module boundaries visible.
Avoid retrieving dependencies manually from the application context in normal domain/service code.