of 30
8/12/2019 Spring Framework Presentation
1/30
Copyright 2005 Finetix LLCAll Rights Reserved 0
Spring Framework Developer Session
Chris Donnan
&
Solomon Duskis
The Peer Framework s Series - .Net and J ava
8/12/2019 Spring Framework Presentation
2/30
Copyright 2005 Finetix LLCAll Rights Reserved 1
Overview
600- 630
Light Snack
630700
Introduction to Inversion of Control, Dependency Injection and
other core concepts.
700730
Spring Framework - .Net Session
730800
Spring FrameworkJava Session
8/12/2019 Spring Framework Presentation
3/30
Copyright 2005 Finetix LLCAll Rights Reserved 2
About Us
Chris Donnan
Senior Software Engineer at Finetix - servicing investment banking
clients
Contact me at : [email protected]
Blog: http://blog.chrisdonnan.com
Solomon Duskis
Solomon Duskis is a Senior Consultant at Finetix. He has worked with
clients in a variety of fields including financial, insurance, publishing, and
medicine. Over the last three years he has worked at clients with some
level of Spring Framework deployments. His technical ramblings can be
found at http://www.jroller.com/page/Solomon
mailto:[email protected]://blog.chrisdonnan.com/https://www.opus-i.com/exchweb/bin/redir.asp?URL=http://www.jroller.com/page/Solomonhttps://www.opus-i.com/exchweb/bin/redir.asp?URL=http://www.jroller.com/page/Solomonhttp://blog.chrisdonnan.com/mailto:[email protected]8/12/2019 Spring Framework Presentation
4/30
Copyright 2005 Finetix LLCAll Rights Reserved 3
Spring Top Level Overview and History
The history of spring. Where did Spring come from and why?
J2EE problems
Rod Johnson and his book
Started in 2002/2003
1.0 version in 2004
Where is Spring being used?
The parts of spring
Java .Net
8/12/2019 Spring Framework Presentation
5/30
8/12/2019 Spring Framework Presentation
6/30
Copyright 2005 Finetix LLCAll Rights Reserved 5
Spring for .Net
Core
AOP Services Data Access
Web Desktop Windows Services3rdParty
Integration
8/12/2019 Spring Framework Presentation
7/30
Copyright 2005 Finetix LLCAll Rights Reserved 6
Dependency Resolution
Plain old way
new your dependencies
Service Locator
use a locator to get instances of your dependencies
Dependency Injection
Get your dependencies handed to you.
These all imply certain couplings
8/12/2019 Spring Framework Presentation
8/30
Copyright 2005 Finetix LLCAll Rights Reserved 7
Plain old dependency creation
Example:
public class Foo {
private IBar bar;
private IBaz baz;
public Foo() {
bar = new SomeBar();
baz = new SomeBaz();
}
}
Characteristics
Cons
Your class depends upon all its
dependencies depend on.
Your class must know how to
assemble instances of its
dependencies and their
dependencies.
Hard to change behavior without
opening code
Hard to test as you must also test
depends. Cannot use mocks.
Pros
Easy to understand
8/12/2019 Spring Framework Presentation
9/30
Copyright 2005 Finetix LLCAll Rights Reserved 8
Service Locator
Example:
public class Foo {
private IBar bar;
private IBaz baz;
private IServiceLocator locator;
public Foo(IServiceLocator locator_) {locator = locator_;
bar = locator.Get(
ServiceNames.BAR
);
baz = new SomeBaz(
ServicesNames.BAZ
);
}
}
Characteristics
Cons Your class depends upon the service
locator
You must still get the locator to the classeither statically (yuk) or via somesort of injection like mechanism
Pros Easy to understand
Testable
Flexible
Extensible
Enforces separation of interface fromimplementation
8/12/2019 Spring Framework Presentation
10/30
Copyright 2005 Finetix LLCAll Rights Reserved 9
Inversion of Control
Example:
public class Foo {
private IBar bar;
private IBaz baz;
public Foo(IBar bar_, IBaz baz_) {
bar = bar_;
baz = baz_;
}
}
Characteristics
Cons
You must create dependencies to
pass along
Pros Easy to understand
Testable
Flexible
Extensible
Enforces separation of interface
from implementation
Code is simple and clear
8/12/2019 Spring Framework Presentation
11/30
Copyright 2005 Finetix LLCAll Rights Reserved 10
Inversion Of Control
Inversion Of Control, Dependency Injection, The Hollywood Principal
etc.
In stead of instantiating concrete class
references in your class, depend on anabstraction and allow your concrete
dependencies to be given to you.
8/12/2019 Spring Framework Presentation
12/30
Copyright 2005 Finetix LLCAll Rights Reserved 11
Injection Types
Setter Injection
Pass dependencies in via mutators/ property setters
Constructor Injection
Pass dependencies in via constructor
8/12/2019 Spring Framework Presentation
13/30
Copyright 2005 Finetix LLCAll Rights Reserved 12
Without IoC
8/12/2019 Spring Framework Presentation
14/30
Copyright 2005 Finetix LLCAll Rights Reserved 13
Concrete Class Dependency
8/12/2019 Spring Framework Presentation
15/30
Copyright 2005 Finetix LLCAll Rights Reserved 14
Allow dependency to be passed in
8/12/2019 Spring Framework Presentation
16/30
Copyright 2005 Finetix LLCAll Rights Reserved 15
Same thingwith property setter
8/12/2019 Spring Framework Presentation
17/30
Copyright 2005 Finetix LLCAll Rights Reserved 16
The problem with IoC by itself
To build these objects now takes assembling the whole object graph
of dependencies!!! What a pain!!!
8/12/2019 Spring Framework Presentation
18/30
8/12/2019 Spring Framework Presentation
19/30
Copyright 2005 Finetix LLCAll Rights Reserved 18
Springs Heart
At its core Spring is a framework for wiring up
your entire application.
8/12/2019 Spring Framework Presentation
20/30
Copyright 2005 Finetix LLCAll Rights Reserved 19
Object Factory
Object Factory
The thing that creates object instances for you
You ask the object factory for a named itemit returns an instance to
youeither a singleton or a prototype.
Singleton
There is 1 and only 1 instance
Each time you ask the object factory for oneyou get the same one
Prototype This is a non-singleton
Each time you ask the object factory for oneyou get a new one
8/12/2019 Spring Framework Presentation
21/30
Copyright 2005 Finetix LLCAll Rights Reserved 20
Object factory as a Service Locator
Ideallyyou could use Spring to ask for an object at the top level of
your applicationand it would give you back an entire object graphof fully baked objects. That saidthis is not always feasable.
You can use Spring as a service locatoror as an implementation
detail of your service locator. Service locator is a great alternative to
IoCespecially when things like UI designers New your objects infor you. Depending on how you do thisyou could be more or less
tied to spring (that is not great). In the pastI have tried to make
spring an implementation detailand hide it behind my own
abstraction for locator.
8/12/2019 Spring Framework Presentation
22/30
Copyright 2005 Finetix LLCAll Rights Reserved 21
Why IoC with a Container
Support programming best practices:
Separation of interface from implementation Allows you to substitute implementation
Code is smaller and cleanerprogram your intentnot how to createyour dependencies and their dependencies etc.
The Dependency Inversion Principle (DIP)
Depend upon Abstractions. Do not depend upon concretions.
The Open Closed Principle (OCP)
A module should be open for extension but closed for modification. Of all theprinciples of object oriented design, this is the most important. It originatedfrom the work of Bertrand Meyer . It means simply this: We should write ourmod-ules so that they can be extended, without requiring them to be modified.In other words, we want to be able to change what the modules do, withoutchanging the source code of the modules.
8/12/2019 Spring Framework Presentation
23/30
Copyright 2005 Finetix LLCAll Rights Reserved 22
Why IoC - continued
Testability
You can substitute implementationspecifically pass in a Mock object soyou only write code to test the code you are writing. You are NOT testing
the code in your dependencies.
Manages assembly of complex objects for you!
Reduce coupling of code
Easy reconfiguration
Reusability increase due to decoupling
8/12/2019 Spring Framework Presentation
24/30
Copyright 2005 Finetix LLCAll Rights Reserved 23
Other IoC Related Frameworks
Hivemind
Pico Container
Copeland
StructureMap
EJB 3
JBoss Seam Object Builder in Microsoft CAB
8/12/2019 Spring Framework Presentation
25/30
Copyright 2005 Finetix LLCAll Rights Reserved 24
Spring Framework .net
.Net presentation
8/12/2019 Spring Framework Presentation
26/30
Copyright 2005 Finetix LLCAll Rights Reserved 25
Spring FrameworkJava
Java presentation
8/12/2019 Spring Framework Presentation
27/30
Copyright 2005 Finetix LLCAll Rights Reserved 26
The Big Picture
8/12/2019 Spring Framework Presentation
28/30
Copyright 2005 Finetix LLCAll Rights Reserved 27
The Peer Frameworks Series - .Net and Java
1) Spring Framework Developer Sess ion - SpringFramework.net,
SpringFramework.org
2) Test Drive Development Developer Sessio n- NUnit, JUnit;
Rhino Mocks in .net and Easy Mock in Java3) Db4o Developer Sessio n- Open Source Object Database in .net
and Java
4) ORM Develop er Sessio n- Hibernate, NHibernate / IBatis
8/12/2019 Spring Framework Presentation
29/30
Copyright 2005 Finetix LLCAll Rights Reserved 28
References
http://SpringFramework.org
http://SpringFramework.net
http://www.martinfowler.com/articles/injection.html
http://springframework.org/http://springframework.net/http://www.martinfowler.com/articles/injection.htmlhttp://www.martinfowler.com/articles/injection.htmlhttp://springframework.net/http://springframework.org/8/12/2019 Spring Framework Presentation
30/30
Copyright 2005 Finetix LLC29
Ruby does IoC
Concrete Implementations