As you probably know, Spring was created with the intention of simplifying all of the complexity of the J2EE world. It was created as a dependency injection framework and as an alternative to the EJB stack with distributed objects, which was unnecessary in most applications. The traditional approach to J2EE introduced a lot of complexity when it was used to bootstrap an application, and this involved even more complexity when used to accomplish the business requirements it had to solve. Consequently, we were left with applications that were difficult to test and were too costly to develop and maintain.
Spring and J2EE were created when Java didn't have annotations, so big XML files were necessary for wire classes. Fortunately, annotations became available in version 1.5 of the Java Development Kit (JDK), and that helped to reduce the need...