Spring is a complete j2ee framework having following features

  1. Spring Core:
  2. Most basic part of framework that provides IOC and dependency injection features .The most basic part is BeanFactory which provides a sophisticated implementation of the factory pattern which allows programmer to decouple the configuration and specification of dependencies from actual program logic.

  3. Spring Context Package:
  4. The package, which provides a way to access objects in a framework-style manner similar to JNDI naming Concept.

  5. Spring DAO package:
  6. This Package provides a JDBC-abstraction layer that removes the need to write JDBC coding and parsing database-vendor specific error codes.

  7. Spring ORM package:
  8. This Package provides integration layers for popular object-relational mapping. APIs, like JDO, Hibernate etc. Using the ORM package you can use all those O/R-mappers in combination with all the other features Spring offers, such as the simple declarative transaction management feature.

  9. Spring AOP Package:
  10. This is a aspect-oriented programming implementation which allows to define method-interceptors and point cuts to decouple code implementing functionality that should logically be separated.

  11. Spring's Web package:
  12. This package provides basic web-oriented integration features, like multipart file-upload functionality or initialization of the IoC container using servlet listeners and a web-oriented application context. When using Spring together with Struts or any other web framework, this is the package to integrate with.

  13. Spring's MVC package:
  14. This package provides a Model-View-Controller (MVC) implementation for web-applications. Spring's MVC framework is different from other implementations as it provides a clean separation between model code and web forms, and allows you to use all the other features of the Spring Framework.