Spring Framework. Spring Overview Spring is an open source layered Java/J2EE application framework Created by Rod Johnson Based on book “Expert one-on-one.

Slides:



Advertisements
Similar presentations
Introduction to the Spring Framework
Advertisements

Apache Struts Technology
Spring, Hibernate and Web Services 13 th September 2014.
Introduction to the Spring Framework University of Kansas January 2009 This presentation and example application are available at
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Next Generation Node (NGN) Technical Overview April 2007.
© 2005, Cornell University. Rapid Application Development using the Kuali Architecture (Struts, Spring and OJB) A Case Study Bryan Hutchinson
Pragmatic Application Building: Step by Step Jay Sissom Principal Systems Analyst Indiana University
1 November 21st 2009 Shaun Abram An Introduction to Spring.
The Spring Framework: A brief introduction to Inversion of Control James Brundege
Last Update: 5/15/061 Spring J2EE Framework Ram A. Rao May 15 th ‘05.
Intro to Spring CJUG - January What is Spring? “The Spring framework provides central transaction control of various objects.” This means that any.
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Using Third-Party Frameworks in Building Blocks™ David Ashman Principal Architect, Product Development.
The Spring Framework A quick overview. The Spring Framework 1. Spring principles: IoC 2. Spring principles: AOP 3. A handful of services 4. A MVC framework.
Spring Framework Adam Waldal Senior Consultant. About me..  OPI is a leader in J2EE consulting with Relationships with BEA, IBM, Tibco, and many other.
UNIT-V The MVC architecture and Struts Framework.
Spring Framework. Spring Overview Spring is an open source layered Java/JavaEE application framework Created by Rod Johnson Based on book “Expert one-on-one.
NetArchive Suite Workshop 2011 Technical Track - Code refactoring with the Spring Framework.
Introduction to the Spring Framework By: Nigusse A. Duguma Kansas State university Department of Computer Science Nov 20, 2007.
Spring Overview, Application demo -Midhila Paineni 09/23/2011 Spring Overview, Application demo9/8/20151.
Spring. Spring Overview Spring Container Concepts Spring and AOP Spring and Data Access Managing Transactions and Resources Remoting and Accessing Enterprise.
The Spring Framework Training Get to know Spring Framework Rohit Prabhakar
Introduction to the Spring Framework Rajesh. Spring Mission Statement J2EE should be easier to use OO design is more important than any implementation.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Understanding the Bean Lifecycle An.
Spring core v3.x Prepared by: Nhan Le. History v3.0 Spring Expression Language Java based bean metadata v3.1 Cache Abstraction Bean Definition Profile.
Dependency Injection in Action Jan Västernäs. CADEC2006, DI, Slide 2 Copyright 2006, Callista Enterprise AB Agenda (DI=Dependency Injection) Background.
Chapter 8 Script-free pages. Problem with scripting in JSP When you use scripting (declaration, scriplet, expressions) in your JSP, you actually put Java.
Text 16 de mayo de 2009 Spring Framework Part I. Dependency Injection Buenos Aires, May 2009.
PicoContainer Presented by: Jim O’Hara Ed Kausmeyer Jingming Zhang.
Opus College - overview. OpusCollege - background First project: ICT Capacity Building Mozambican Higher Education Institutions Partners: RUG Groningen,
Spring Framework. Spring Overview Spring is an open source layered Java/J2EE application framework Created by Rod Johnson Based on book “Expert one-on-one.
Introduction to Spring Matt Wheeler. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic.
Comparing JavaBeans and OSGi Towards an Integration of Two Complementary Component Models HUMBERTO CERVANTES JEAN-MARIE FAVRE 09/02.
Source: Peter Eeles, Kelli Houston, and Wojtek Kozaczynsky, Building J2EE Applicationa with the Rational Unified Process, Addison Wesley, 2003 Prepared.
Spring Training 17/09/ Dependency Injection.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Montreal CRIM Workshop Introduction to Spring Framework,
Introduction to Web Dimitar Nenchev Ivan Nakov
A Presentation By V AIBHAV S AHARAN Web-enHanced Information Management COMS E6125.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Spring Remoting Simplifying.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Spring Framework. About spring Spring is the most popular application development framework for enterprise Java. Millions of developers around the world.
Apache Struts. J2EE Web Application using MVC design pattern Why MVC? Separate components = easier maintenance – Model component holds object data – View.
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions Buenos Aires, June 2009.
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool The problem fixed by ORM Advantage Hibernate Hibernate Basic –Hibernate sessionFactory –Hibernate Session.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma Presentation to the 20 th.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
1 Spring Framework April, 2012 Lam Ho Lam To. © 2010 Cisco and/or its affiliates. All rights reserved. Cisco Confidential 2 1.Spring Overview 2.Framework.
1 Copyright © 2004, Oracle. All rights reserved. Oracle Application Development Framework.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Introduction to Data Access with Spring.
Kansas City Java User’s Group Jason W. Bedell July 12, 2006
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions Buenos Aires, June 2009.
Topic : Hibernate 1 Kaster Nurmukan. An ORM tool Used in data layer of applications Implements JPA.
Introduction – ORM, Helloworld Application
Text 16 de mayo de 2009 Spring Framework Part III. Portable Service Abstractions and Spring MVC Buenos Aires, June 2009.
Apache Struts Technology A MVC Framework for Java Web Applications.
Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License Sakai Programmer's Café Sakai Montreal CRIM Workshop Introduction to Spring Framework.
CS520 Web Programming Spring – Inversion of Control Chengyu Sun California State University, Los Angeles.
J2EE Lecture 6: Spring – IoC and Dependency Injection
CS520 Web Programming Spring – Inversion of Control
Distribution and components
Unit 6-Chapter 2 Struts.
By Ru Shen Department of Computer Science UAlbany, 2008
Intro to Spring CJUG - January 2013.
Tuesday Brown Bag Inversion of Control with Howard Abrams
Developing and testing enterprise Java applications
Presentation transcript:

Spring Framework

Spring Overview Spring is an open source layered Java/J2EE application framework Created by Rod Johnson Based on book “Expert one-on-one J2EE Design and Development” (October, 2002) Current version (released on ) The Spring Framework is licensed under the terms of the Apache License, Version 2.0 and can be downloaded at: Philosophy: J2EE should be easier to use, “Lightweight Container” concept A software framework is a re-usable design for a software system.

What are Lightweight Frameworks? Non-intrusive No container requirements Simplify application development Remove re-occurring pattern code Productivity friendly Unit test friendly Very pluggable Usually open source Examples: Spring, Pico, Hivemind Hibernate, IBatis, Castor WebWork Quartz Sitemesh

Spring Mission Statement J2EE should be easier to use It's best to program to interfaces, rather than classes. Spring reduces the complexity cost of using interfaces to zero. JavaBeans offer a great way of configuring applications OO design is more important than any implementation technology, such as J2EE Checked exceptions are overused in Java. A framework shouldn't force you to catch exceptions you're unlikely to be able to recover from. Testability is essential, and a framework such as Spring should help make your code easier to test Spring should be a pleasure to use Your application code should not depend on Spring APIs Spring should not compete with good existing solutions, but should foster integration. (For example, JDO and Hibernate are great O/R mapping solutions. Don't need to develop another one).

Modules of the Spring Framework 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, , Testing, …

Overview of the Spring Framework Very loosely coupled, components widely reusable and separately packaged.

Spring Details Spring allows to decouple software layers by injecting a component’s 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.

Advantages of Spring Architecture 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)

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

How to Start Using Spring Download Spring from e.g. spring-framework with-dependencies.zip Unzip to some location, e.g. C:\tools\spring-framework Folder C:\tools\spring-framework-2.0.6\dist contains Spring distribution jar files Add libraries to your application classpath and start programming with Spring

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 etc All together form the object lifecycle which is one of the most important features Java objects that are managed by the Spring IoC container are referred to as beans

Dependency Injection – Non-IoC public class MainBookmarkProcessor implements BookmarkProcessor{ private PageDownloader pageDownloader; private RssParser rssParser; public List loadBookmarks() { // direct initialization pageDownloader = new ApachePageDownloader(); rssParser = new JenaRssParser(); // or factory initialization // pageDownloader = PageDownloaderFactory.getPageDownloader(); // rssParser = RssParserFactory.getRssParser(); // use initialized objects pageDownloader.downloadPage(url); rssParser.extractBookmarks(fileName, resourceName); //... }

Dependency Injection - IoC Beans define their dependencies through constructor arguments or properties Container resolves (injects) dependencies of components by setting implementation object during runtime BeanFactory interface - the core that loads bean definitions and manages beans Most commonly used implementation is the XmlBeanFactory class Allows to express the objects that compose application, and the interdependencies between such objects, in terms of XML The XmlBeanFactory takes this XML configuration metadata and uses it to create a fully configured system

Non-IoC versus IoC Non Inversion of Control approach Inversion of Control approach

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; } }

IoC Java Bean public class MainBookmarkProcessor implements BookmarkProcessor{ private PageDownloader pageDownloader; private RssParser rssParser; public List loadBookmarks() { pageDownloader.downloadPage(url); rssParser.extractBookmarks(fileName, resourceName); //... } public void setPageDownloader(PageDownloader pageDownloader){ this.pageDownloader = pageDownloader; } public void setRssParser(RssParser rssParser){ this.rssParser = rssParser; }

Configuration metadata <beans xmlns=" xmlns:xsi=" xsi:schemaLocation=" <bean id="rssParser" class="com.web.robot.impl.JenaRssParser"/> Spring configuration XML consists of at least one bean definition that the container must manage, but typically there will be more than one bean definition

Instantiating a Container Instantiating a Spring IoC container is easy. Place config XML in classpath and from your code call: Resource resource = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); OR ClassPathResource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); OR ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); The ApplicationContext interface builds on top of the BeanFactory (it is a sub-interface) and adds other functionality

Using the Container The BeanFactory interface has only six methods for client code to call: boolean containsBean(String) : returns true if the BeanFactory contains a bean definition or bean instance that matches the given name. Object getBean(String) : returns an instance of the bean registered under the given name. Object getBean(String, Class) : returns a bean, registered under the given name. The bean returned will be cast to the given Class. Class getType(String name) : returns the Class of the bean with the given name. boolean isSingleton(String) : determines if the bean under the given name is a singleton. String[] getAliases(String) : Return the aliases for the given bean name, if any were defined in the bean definition.

Spring Bean Definition The bean class is the actual implementation of the bean being described by the BeanFactory Bean examples – DAO, DataSource, Transaction Manager, Persistence Managers, Service objects, etc Spring config contains implementation classes while your code should program to interfaces Bean behaviors include: Singleton or prototype Autowiring Initialization and destruction methods init-method destroy-method Beans can be configured to have property values set Can read simple values, collections, maps, references to other beans, etc

Spring Bean Definition Each bean definition consists of the following set of properties: class name scope constructor arguments properties autowiring mode dependency checking mode lazy-initialization mode initialization method destruction method Beans are created using the instructions defined in the configuration metadata that has been supplied to the container

Scope The Spring Framework supports exactly five scopes : ScopeDescription singletonScopes a single bean definition to a single object instance per Spring IoC container. prototypeScopes a single bean definition to any number of object instances. requestScopes a single bean definition to the lifecycle of a single HTTP request; that is each and every HTTP request will have its own instance of a bean created off the back of a single bean definition. session Scopes a single bean definition to the lifecycle of a HTTP Session. Only valid in the context of a web-aware ApplicationContext. global session Scopes a single bean definition to the lifecycle of a global HTTP Session. Typically only valid when used in a portlet context.

Setter/Constructor Injection Dependency Injection exists in two major variants: element --> element --> Setter injection: Constructor injection:

Autowiring Mode It is possible to automatically let Spring resolve collaborators (other beans) for your bean by inspecting the contents of the BeanFactory. ModeExplanation noNo autowiring at all. byNameAutowiring by property name. Will inspect the container and look for a bean named exactly the same as the property which needs to be autowired. byTypeAllows a property to be autowired if there is exactly one bean of the property type in the container. constructorThis is analogous to byType, but applies to constructor arguments. autodetectChooses constructor or byType through introspection of the bean class.

Dependency Checking Mode This feature is sometimes useful when you want to ensure that all properties are set on a bean. ModeExplanation noneNo dependency checking. Properties of the bean which have no value specified for them are simply not set. simpleDependency checking is performed for primitive types and collections (everything except collaborators). objectDependency checking is performed for collaborators only. allDependency checking is done for collaborators, primitive types and collections.

Lazy-Initialization Mode The default behavior for ApplicationContext implementations is to eagerly pre-instantiate all singleton beans at startup If you do not want such a behavior, you can selectively control this by marking a bean definition as lazy-initialized It is also possible to control lazy-initialization at the container level by using the 'default-lazy-init' attribute on the element: If lazy bean is the dependency of a not lazy singleton bean – don't be confused if the IoC container creates it!

Init/Destroy Methods Two ways to implement initialization/destruction callbacks: implementing InitializingBean interface using the 'init-method' attribute public class AnotherExampleBean implements InitializingBean { public void afterPropertiesSet() { // do some initialization work } public class ExampleBean { public void init() { // do some initialization work }

Bean Lifecycle Beans managed by Spring have a distinct and predictable lifecycle Spring provides simple ways of receiving callbacks from lifecycle events Hooks are purely optional, no dependency on Spring in your beans – unless you want to

References Spring Home: Inversion of Control Containers and the Dependency Injection pattern Spring IoC Container: e/beans.html Introduction to the Spring Framework by Rod Johnson gFramework