Using a container is mostly about changing from an imperative/scripted style of initialization and configuration to a declarative one. This may have a few different beneficial effects:
- Reducing hairball main-program startup routines.
- Enabling fairly deep deployment-time reconfiguration capabilities.
- Making dependency-injectable style the path of least resistance for new work.
Of course, there may be difficulties:
- Code that requires complex startup/shutdown/lifecycle management may not be easily adapted to a container.
- You will probably have to navigate any personal, process and team culture issues -- but then, that's why you asked...
- Some of the toolkits are fast becoming heavyweight themselves, encouraging the sort of deep dependency that many DI containers started off as a backlash against.