The choice to keep POJOs pure doesn't come without cost. Rather than spending the effort to develop and maintain complex configuration files it is possible to simply use annotations to mark classes and let spring do the rest of the work. Resolving dependencies can be simple if they follow a convention such as matching by type or by name. This is choosing convention over configuration .  It is also arguable that, when refactoring to another framework, removing framework specific annotations would be a trivial part of the task  and many injection annotations are now standardized.