際際滷

際際滷Share a Scribd company logo
Spring Framework1
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
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
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
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
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
Overview of Spring Framework7
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
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
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
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
Non-IoC versus IoC
Non Inversion of Control
approach
Inversion of Control
approach
12
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
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
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

More Related Content

Spring framework

  • 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
  • 7. Overview of Spring Framework7
  • 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
  • 12. Non-IoC versus IoC Non Inversion of Control approach Inversion of Control approach 12
  • 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