Spring is an open source,lightweight,loosely coupled,aspect oriented,Dependency Injection application framework created to address the complexity of enterprise application development. One of the major advantages of the Spring framework is its layered architecture, which allows you to be selective about which of its components we use for J2EE application development.
spring is lightweight because of it’s small size and transparency and the time elapsed in processing is also very negligible.
The basic concept of the Dependency Injection or Inversion of Control is that, programmer do not need to create the objects, instead just describe how it should be created. No need to directly connect your components and services together in program, instead just describe which services are needed by which components in a configuration file/xml file. The Spring IOC container is then responsible for binding it all up.
Spring supports Aspect oriented programming which hides secondary or supporting functions from the main program’s business logic.The application’s modularity is increased in that way and its maintenance becomes significantly easier.
Spring contains and manages the life cycle and configuration of application objects.
Spring comes with MVC web application framework, built on core Spring functionality. This framework is configurable, strategy interfaces, and facilitates multiple view technologies like JSP, Velocity, Tiles etc. But other frameworks can be easily used instead of Spring MVC Framework.
Spring framework provides an abstraction layer for transaction management. Which allows the developer to add the pluggable transaction managers, and making it easy to for transactions without dealing with low-level issues. Spring’s transaction support is not tied to J2EE environments and it can be also used in container less environments.
The JDBC abstraction layer of the Spring offers a significant exception hierarchy, which makes the error handling very easy. Integration with.