The composition root is the single place in your application where the composition of the object graphs for your application take place, using the dependency injection container (although how this is done is irrelevant, it could be using a container or could be done manually using pure DI).
There should only be one place where this happens and your container should not need to be used outside of the composition root.
Quoting from one of the answers linked to below:
In practice, this means that you
should configure the container at the
root of your application.
- In a desktop app, that would be in the Main method (or very close to it)
- In an ASP.NET (including MVC) application, that would be in
Global.asax
- In WCF, that would be in a ServiceHostFactory
- etc.
There is a good answer here which explains a bit more about this.
See also this answer.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…