What is Spring Framework?
Now the answer of this question can go to a great depth.But my focus here is to cover following points under the periphery of answer of question framed:
-Definition of Spring
-Structure/Modules/Components of Spring
Definition: Spring is a lightweight container,sometimes referred as framework also, which provides runtime support for different enterprise level services and frameworks.Spring has Inversion of Control(IoC) and Aspect Oriented Programming(AOP) concepts at its core(These concepts will be answered under separate questions).Spring has provided a platform for existing projects,technologies,concepts to combine and provide a cohesive enterprise level application development support.
Spring framework is consisted of seven modules as shown in the diagram below:
Spring Framework(Image Source: springframework.org)
Core package-most fundamental
-provides the IoC and Dependency Injection features
-The concept of BeanFactory that helps in decoupling configuration and specification of dependencies from your actual program logic.
Context package
- build on top of Core package
- provides a way to access objects similar to JNDI way.
-support for internationalization (I18N),event-propagation, resource-loading, and transparent creation of contexts.
DAO package
-provides a JDBC-abstraction layer
-programmatic as well as declarative transaction management
-POJOs (plain old Java objects) support.
ORM package
-provides integration layers for O/R mapping APIs, including JPA, JDO, Hibernate, and iBatis.
AOP package
- provides an aspect-oriented programming implementation
- defining method-interceptors and pointcuts to cleanly decouple code implementing functionality
Web package
-provides basic web-oriented integration features, such as multipart file-upload functionality, the initialization of the IoC container using servlet listeners and a web-oriented application context.
- integrate this package when using Spring with WebWork or Struts
MVC package
-provides clean separation between domain model code and web forms