The document provides an overview of the Spring Framework. It discusses that Spring is an open source application framework for Java that provides inversion of control and dependency injection. The document outlines Spring's history and key modules. It also discusses advantages like decoupling layers and configuration, and how Spring addresses areas like web apps, databases, transactions, and remote access. The document explains inversion of control and dependency injection in Spring through Java beans and configuration files. It concludes with how to get started using Spring by downloading the framework files.
2. Overview
Introduction
History
Modules of the Framework
Overview of Spring Framework
Spring Details
Advantages
Spring Solutions
Inversion of Control( IoC )
How to Start Using Spring
2
3. Introduction
The Spring Framework is an open source application framework and inversion of
control container for the Java platform.
The framework's core features can be used by any Java application, but there are
extensions for building web applications on top of the Java EE platform.
Although the framework does not impose any specific programming model, it has
become popular in the Java community as an alternative to, replacement for, or
even addition to the Enterprise JavaBean (EJB) model.
3
4. History
The first version was written by Rod Johnson, who released the framework with the
publication of his book Expert One-on-One J2EE Design and Development in
October 2002.
The framework was first released under the Apache 2.0 license in June 2003. The first
milestone release, 1.0, was released in March 2004, with further milestone releases in
September 2004 and March 2005.
The Spring 1.2.6 framework won a Jolt productivity award and a JAX Innovation
Award in 2006. Spring 2.0 was released in October 2006, Spring 2.5 in November
2007, Spring 3.0 in December 2009, Spring 3.1 in December 2011, and Spring 3.2.5 in
November 2013.
The current version is Spring Framework 4.0, which was released in December
2013.Notable improvements in Spring 4.0 include support for Java SE 8, Groovy 2,
some aspects of Java EE7, and WebSockets.
Philosophy: J2EE should be easier to use, Lightweight Container concept
4
5. What are Lightweight Frameworks?
No container requirements
Simplify application development
Remove re-occurring pattern code
Productivity friendly
Very pluggable
Usually open source
Examples:
Spring, Pico, Hivemind
Hibernate, IBatis, Castor
WebWork
Quartz
Sitemesh
5
6. Modules
The Spring Framework can be considered as a collection of frameworks-in-the-
framework:
Core - Inversion of Control (IoC) and Dependency Injection
AOP - Aspect-oriented programming
DAO - Data Access Object support, transaction management, JDBC-abstraction
ORM - Object Relational Mapping data access, integration layers for JPA, JDO,
Hibernate, and iBatis
MVC - Model-View-Controller implementation for web-applications
Remote Access, Authentication and Authorization, Remote Management, Messaging
Framework, Web Services, Email, Testing,
6
8. Spring Details
Spring allows to decouple software layers by injecting a components dependencies at
runtime rather than having them declared at compile time via importing and
instantiating classes.
Spring provides integration for J2EE services such as EJB, JDBC, JNDI, JMS, JTA. It also
integrates several popular ORM toolkits such as Hibernate and JDO and assorted other
services as well.
One of the highly touted features is declarative transactions, which allows the
developer to write transaction-unaware code and configure transactions in Spring
config files.
Spring is built on the principle of unchecked exception handling. This also reduces code
dependencies between layers. Spring provides a granular exception hierarchy for data
access operations and maps JDBC, EJB, and ORM exceptions to Spring exceptions so
that applications can get better information about the error condition.
With highly decoupled software layers and programming to interfaces, each layer is
easier to test. Mock objects is a testing pattern that is very useful in this regard.
8
9. Advantages
Enable you to write powerful, scalable applications using POJOs
Lifecycle responsible for managing all your application components, particularly
those in the middle tier container sees components through well-defined lifecycle:
init(), destroy()
Dependencies - Spring handles injecting dependent components without a
component knowing where they came from (IoC)
Configuration information - Spring provides one consistent way of configuring
everything, separate configuration from application logic, varying configuration
In J2EE (e.g. EJB) it is easy to become dependent on container and deployment
environment, proliferation of pointless classes (locators/delegates); Spring
eliminates them
Cross-cutting behavior (resource management is cross-cutting concern, easy to
copy-and-paste everywhere)
Portable (can use server-side in web/EJB app, client-side in swing app, business
logic is completely portable)
9
10. Spring Solutions
Solutions address major J2EE problem areas:
Web application development (MVC)
Enterprise Java Beans (EJB, JNDI)
Database access (JDBC, iBatis, ORM)
Transaction management (JTA, Hibernate, JDBC)
Remote access (Web Services, RMI)
Each solution builds on the core architecture
Solutions foster integration, they do not re-invent the wheel
10
11. Inversion of Control( IoC )
Central in the Spring is its Inversion of Control container
Based on Inversion of Control Containers and the Dependency Injection pattern (Martin
Fowler)
Provides centralized, automated configuration, managing and wiring of application Java
objects
Container responsibilities:
creating objects,
configuring objects,
calling initialization methods
passing objects to registered callback objects
All together form the object lifecycle which is one of the most important features
11
13. IoC Basics
Basic JavaBean pattern:
include a getter and setter method for each field:
Rather than locating needed resources, application components provide
setters through which resources are passed in during initialization
In Spring Framework, this pattern is used extensively, and initialization is usually
done through configuration file rather than application code
class MyBean {
private int counter;
public int getCounter()
{ return counter; }
public void setCounter(int counter)
{ this.counter = counter; }
}
13
14. IoC Java Bean
public class MainBookmarkProcessor implements BookmarkProcessor{
private PageDownloader pageDownloader;
private RssParser rssParser;
public List<Bookmark> loadBookmarks()
{
pageDownloader.downloadPage(url);
rssParser.extractBookmarks(fileName, resourceName);
// ...
}
public void setPageDownloader(PageDownloader pageDownloader){
this.pageDownloader = pageDownloader;
}
public void setRssParser(RssParser rssParser){
this.rssParser = rssParser;
}
14
15. How to Start Using Spring
Download Spring from www.springframework.org, e.g. spring-framework-3.0.1-
with-dependencies.zip
Unzip to some location, e.g. C:toolsspring-framework-3.0.1
Folder C:toolsspring-framework-3.0.1dist contains
Spring distribution jar files
Add libraries to your application classpath and start
programming with Spring
15