spring framework presentation

Upload: twinkz007

Post on 03-Jun-2018

229 views

Category:

Documents


1 download

TRANSCRIPT

  • 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