Clear, short, to the point.
I've often spoken about this as separating configuration logic from "runtime" logic. Where configuration is which concrete objects are used in the application and runtime is the rest. There might be a better word than runtime since indeed the EntryPoint.initialize() is also runtime, suggestions are welcome :)
You don't mention that this will lead to a dependency injection tool used well. In every application I've come by the dependency injection framework was solely used to implement the service locator pattern. It's like we (me including) don't see the good principles because of the frameworks built on them.