The most complete convenient container, automated configuration, providing centralized, and wiring of your app objects. The container is capable of assembling, non invasive a intricate system from a set of loosely coupled components in a sequent and transparent fashion. The container brings leverage and agility, and improves application scalability and testability by allowing software components to be tested in isolation, first developed and then scaled up for deployment in any environment.
A common abstraction layer for transaction management, managers, allowing for plug transaction and making it easy to demarcate transactions without dealing with low level issues. Generic strategies for a single JDBC DataSource and JTA are included. In opposition to plain EJB CMT or JTA, Spring's transaction support is not tied to J2EE environments.
A JDBC abstraction layer that offers simplifies error handling, a expressive exception series, and greatly reduces the amount of code you will need to compose. You will never need to compose another finally block to use JDBC again. The JDBC oriented exceptions comply to Spring's generic data access object exception series.
Aspect-oriented programming functionality, fully integrated into Spring endowment management. You can Aspect-oriented programming-enable any object managed by adding aspects, Spring such as narrative transaction management. With Spring, you can have declarative transaction management without EJB even without JTA, if you're using a single database in Tomcat or another web container without JTA support.
A flexible Model View Controller(MVC) web application framework, make on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like Velocity, JSP, iText, Tiles and POI. Note that a Spring middle tier can easily be combined with a web tier based on any other web MVC framework, like WebWork, Struts or Tapestry.
Spring's layered tectonics gives you a flexibility. All its functionality makes on lower levels. So you can use the JavaBeans configuration management without using the MVC framework or Aspect-oriented programming(AOP) support