IntroductionToSpring

Download Report

Transcript IntroductionToSpring

Introduction to Spring

Matt Wheeler

Notes • • • This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack – Basic Java and XML skills

Overview • Learn the basics of the Spring Framework http://www.springsource.org/documentation

Goals of the Spring Framework • • • Simplify Java EE development Solve problems not addressed by Java EE Provide simple integration for best of breed technologies

Defining Beans • • Define beans to be managed by Spring (IoC) container – Defined in xml (applicationContext.xml in the Stack) – Defined using annotations Basic configuration

– Bean definitions go here -->

Defining beans • Each bean should have – Unique name or preferrably id

Lab 1: Bean Creation https://tech.lds.org/wiki/Introduction_to_Spring#L ab_1_Bean_Creation

Bean Scopes • • • Where Spring starts to pay dividends Sometimes you want to be able to control the life of a bean – Bean scopes provide this ability By default all beans are singletons

Available Bean Scopes

Scope

singleton prototype request session globalSession

Documentation

Creates a single bean instance per IoC container (default) Creates a new instance every time a bean of the type is requested Creates a single instance per HTTP request. Only valid in a web application context.

Creates a single instance per HTTP session. Only valid in a web application context.

Creates a single instance per HTTP session. Only valid in a portal application.

Singleton Scope • Remember these days public static synchronized MySingleton getInstance() { public static MySingleton getInstance() { if (_instance==null) { _instance = new MySingleton(); } return _instance; } • The new world

– singleton is the default so these two definitions are equivalent -->

Prototype Scope • • • Equivalent to calling new every time a an instance of a class is needed Spring does not manage he lifecycle of prototype bean The configuration is as follows:

Web application scopes • Without Spring you would have to manage bean creation and lifecycles manually

Lab 2: Bean Scopes https://tech.lds.org/wiki/Introduction_to_Spring#L ab_2_Bean_Scopes

Advantages of Inversion of Control (IoC) • • • • • • Simplify component dependency and lifecycle management Injection eliminates need for: – Calling new – Looking up dependencies Decouples code from IoC container Injection is easier – less code Simplifies testing Easier to maintain

Inversion of Control (IoC) • • • Heart of Spring Framework is the IoC container Two basic implementations of the IoC container – ApplicationContext – BeanFactory – BeanFactory is stripped down version of ApplicationContext We will exclusively focus on ApplicationContext

Inversion of Control (IoC) the Concept • Simplify component dependencies and lifecycle management – Dependency lookup vs. Dependency Injection //dependency lookup public class Lookup{ private Bean bean; public Bean findBean(Container container) { return (Bean) container.getBean(“someBean”); } } //dependency injection public class Injection { private Bean bean; public void setBean(Bean bean) { this.bean = bean; } }

Dependency Injection (DI) • Two basic types of injection – Setter injection – Constructor injection

DI (setter injection) • Say we have to following Rabbit class public class Rabbit { private String favoriteFood; } public void setFavoriteFood(String favoriteFood) { this.favoriteFood = favoriteFood; } } public void printFavoriteFood() { System.out.println(favoriteFood); • Example

DI (constructor injection) • Say we have to following Rabbit class public class Rabbit { private String favoriteFood; } public Rabbit(String favoriteFood) { this.favoriteFood = favoriteFood; } } public void printFavoriteFood() { System.

out.println(favoriteFood);

• Example

DI (continued) • • Ability to inject many data types – Lists, Sets, Properties, Maps (most collection types) – Other beans Lets us look at a few examples: – http://static.springsource.org/spring/docs/3.0.x/spri ng-framework-reference/html/beans.html#beans collection-elements

DI Collections • Say our rabbit has many favorite foods public class Rabbit { private Set favoriteFoods; } public void setFavoriteFoods(List favoriteFoods) { this.favoriteFoods = favoriteFoods; } } public void printFavoriteFood() { for (String favoriteFoods : favoriteFood) { System.out.println(favoriteFood); } lettuce carrot

DI Bean References • Lets expand our rabbit concept to an entire farm } public class Farm { private List rabbits; } public void setRabbits(List rabbits) { this.rabbits = rabbits; • And then modify our rabbit class just a hair } public class Rabbit { private String name; public Rabbit(String name) { this.name = name; } public void setName(String name) { this.name = name; } //…

Bean Reference Examples

Another } public class Farm { private Rabbit prizeRabbit; } public void setPrizeRabbit(Rabbit prizeRabbit) { this.prizeRabbit = prizeRabbit;

Lab 3: Dependency Injection https://tech.lds.org/wiki/Introduction_to_Spring#L ab_3_Dependency_Injection

Summary • • Info More info