Spring, a non-intrusive framework was developed with the aim to reduce the complexity of Java Enterprise developement.
Spring plumbs together your components (POJOs) of a modular java application, may it be enterprise or web and stays out of your code.
At the core of Spring framework is the Spring Container that constructs your POJOs (on demand) and wire them together with dependency injection (a form of IoC - Inversion of Control ) to construct the application.
Spring comes with ready-made modules to support ORM,Java Enterprise Apps,Web MVC,Remoting & AOP.
Straight forward applications of Spring are
1) Plumbing / Wiring POJOs together to construct a modular application
2) Aspect Oriented Programming (AOP)
3) Dependency Injection
4) Abstraction of data access through DAO pattern
5) Abstraction of various ORMs (Hibernate, Toplink, JPA) and uniform simple access to all.