The JavaEE framework allows development for complex and multi-tiered applications. The main idea behind this framework is that applications are developed using simple naming rules for methods which allow the framework to help in the development. A big downside in the JavaEE approach is the extensive use of configuration files which are required to add an application into the JavaEE container. Furthermore, Enterprise Java Beans are too complex to develop because they need at least two interfaces and sometimes more. Finally, EJBs use too much resources because of the way the container uses them. The container adds all kinds of functions which aren't really needed. The Spring framework aims to solve these problems by introducing concepts like Inversion of Control or Dependency Injection.