+ All Categories
Home > Documents > Spring Framework - Basics - Web Application...

Spring Framework - Basics - Web Application...

Date post: 21-Jun-2020
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
31
Spring Framework - Basics Web Application Development Zsolt Tóth University of Miskolc 2017 Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 1 / 31
Transcript
Page 1: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Framework - BasicsWeb Application Development

Zsolt Tóth

University of Miskolc

2017

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 1 / 31

Page 2: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Table of Contents

1 Instantiation

2 Dependency Injection

3 Spring Core

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 2 / 31

Page 3: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Static Type vs. Dynamic Type

Collection<User> users = new ArrayList<User>();

Static TypeType DeclarationDefines

MethodsIntentionLimits Behavior

Could beClassAbstract ClassInterface

Dynamic TypeInstantiationActual TypeDetermine Behaviorinstanceof Static Type

implementsextends

Can be Instantiated.

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 3 / 31

Page 4: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Inheritance and Implementation

InheritanceSpecificationClass Extension

FieldsMethods

@Override

Only One Parentabstract

final

ImplementationInterfaceBehavior Only

Return TypeNameParametersExceptions

? JavaDoc

Public Methods and ServicesAbstract Methods

Java 8 default

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 4 / 31

Page 5: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Abstraction

Liskov Substitution PrincipleGeneral ↔ AbstractExpected BehaviorVarious ImplementationStatic Type should be

as abstract as possible.as specific as necessary.

Collection<User> users =new ArrayList<User>();

List<User> users = newArrayList<User>();

ArrayList<User> users =new ArrayList<User>();

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 5 / 31

Page 6: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

new Operator

Creates an ObjectMemory AllocationInvoke ConstructorInitialize Object

CostlyIssues

Hard Code Dynamic TypeWhen use?Where use?Testing

class Rectanble{private Point p1,p2;

Rectangle(Point p1,Point p2){

this.p1 = p1;this.p2 = p2;

}}

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 6 / 31

Page 7: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

new Operator

Rectangle r = new Rectangle(0,0,1,1);/* whereRectangle(double p1x,double p1y,..){this.p1 = new Point(p1x,p1y); ...}

*///orPoint p1 = new Point(0,0);Point p2 = new Poit(1,1);Rectangle r = new Rectangle(p1,p2);//orRectangle r = new Rectangle(

new Point(0,0),new Point(1,1);

);

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 7 / 31

Page 8: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Instantiation vs. Usage

InstantiationCostly

Resource AllocationMemory Allocation

Takes TimeEstablish NetworkConnection

Could be DifficultTons of ParametersJDBC

Defines Dynamic Type

UsageUse Object via MethodsDepends on ExpectedBehavior

Static TypeInterface Required

Should not Create Object.Dynamic Type could beChangedReusability

Object creation and usage should be separated!

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 8 / 31

Page 9: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Instantiation

Consequences

ProInstantiation could be Centralized.Testing Become Easier.

See "Software Projects & Testing" subject.

Increase Reusability.More General Code

QuestionHow will we get the dependencies?

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 9 / 31

Page 10: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Table of Contents

1 Instantiation

2 Dependency Injection

3 Spring Core

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 10 / 31

Page 11: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Participants

service an object that will be usedclient object that uses the service

interface defines how the client uses the service

injector creates the service and gives it into the client.

GoalSeparation of the creation of the client’s dependencies from theclient’s behavior.

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 11 / 31

Page 12: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Types of Dependency Injection

Field InjectionDependency Injection Frameworks knowShould not be used.Reflection

Constructor InjectionDependencies are Passed as Constructor ArgumentsCannot Create object when a Dependency is MissingMandatory Dependencies

Setter InjectionSetter Methods are Invoked After Constructor UsedOptional Dependencies

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 12 / 31

Page 13: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Constructor Injection

Mandatory DependenciesPart of Client InitializationBlock the Client’sFunctionalityExamples

Database Access

class Client{private

MandatoryService ms;private OptionalService

os;public

Client(MandatoryServicems){

this.ms = ms;}}

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 13 / 31

Page 14: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Setter Injection

Optional DependenciesNot Required for the ClientExtends, Enhance itsFunctionsExamples

LoggingPublishing Event

class Client{private

MandatoryService ms;private OptionalService

os;public

setOptionalService(OptionalService os ){

this.os = os;}}

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 14 / 31

Page 15: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Typical Service Categories

StorageDatabase Access Objects

Business LogicOther FunctionsMicro Services

3rd Party ServicesSystem Integration"Distributed Systems" subject in MSc.Social MediaCurrency Changewww.programmableweb.com

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 15 / 31

Page 16: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Dependency Injection

Consequences

+ Flexibility and Configurability+ Refactoring+ Increase Abstractness+ Cleaner Code+ Independent Development+ Facilitates Testing and Mocking- Configuration Required- Difficult to Understand- Dependency Injection Framework is Required

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 16 / 31

Page 17: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Table of Contents

1 Instantiation

2 Dependency Injection

3 Spring Core

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 17 / 31

Page 18: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Spring Framework

JavaCurrent Version 4.3Open SourceInversion of ControlFramework

Core, AOP, DataWeb, WebMVCIntegration, Cloud

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.9.RELEASE</version></dependency>

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 18 / 31

Page 19: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Spring Projects

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 19 / 31

Page 20: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Core Elements

CoreBasic TasksResource Finding

BeansBean DefinitionXML Mappingspring-beans-x.x.xsd

ContextApplicationContext

SpELSpring Expression LanguageText EvaluationXML based Bean Definition

#{string expr.}

#{systemProperties[’user’]}#{T(java.lang.Math).random()}

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 20 / 31

Page 21: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

ApplicationContext

interface

Bean factory methodsLoad file resourcesPublish eventsResolve messagesSupport internationalization.Context inheritance

Super InterfacesBeanFactoryResourceLoader

ImplementationsAnnotation Config ApplicationContextClassPath Xml ApplicationContextXml Web Application Context

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 21 / 31

Page 22: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

BeanFactoryinterface

Bean ContainerRegistry of ApplicationComponentsImplementations (27)

XMLAnnotation

BeanObjectString IDDependencyTypes

PrototypeSingleton

containsBean(String)

getBean(String)

getBean(Class<T>)

isPrototype(String)

isSingleton(String)

isTypeMatch(String,Class<T>)

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 22 / 31

Page 23: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Bean Life-cycle

1 BeanNameAware’ssetBeanName

2 BeanClassLoaderAware’ssetBeanClassLoader

3 BeanFactoryAware’ssetBeanFactory

4 EnvironmentAware’ssetEnvironment

5

EmbeddedValueResolverAware’ssetEmbeddedValueResolver

6 ResourceLoaderAware’ssetResourceLoader (onlyapplicable when running in anapplication context)

7

ApplicationEventPublisherAware’ssetApplicationEventPublisher(only applicable when runningin an application context)

8 MessageSourceAware’ssetMessageSource (onlyapplicable when running in anapplication context)

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 23 / 31

Page 24: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Bean Life-cycle

9 ApplicationContextAware’ssetApplicationContext (onlyapplicable when running in anapplication context)

10 ServletContextAware’ssetServletContext (onlyapplicable when running in aweb application context)

11

postProcessBeforeInitializationmethods ofBeanPostProcessors

12 InitializingBean’safterPropertiesSet

13 a custom init-methoddefinition

14 postProcessAfterInitializationmethods ofBeanPostProcessors

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 24 / 31

Page 25: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - XML

AbstractXmlApplicationContextClassPathXmlApplicationContextFileSystemXmlApplicationContext

XMLText basedHuman Readable

Security

Reconfigurable

Location$basedir/src/main/resources

WEB-INF/

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 25 / 31

Page 26: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - XML

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="...xmlns:xsi="...xmlns:p="...xmlns:context="...xmlns:aop="...xmlns:mvc="...xsi:schemaLocation="...><import resource="si-config-measurement.xml"/>...

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 26 / 31

Page 27: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - XML

<bean id="wifiDistanceCalculator"class="<packages>.VectorIntersectionWiFiRSSIDistance"></bean>

<bean id="measurementDistanceCalculator"class="<packages>.MeasurementDistanceCalculatorImpl"><constructor-arg ref="wifiDistanceCalculator"/><constructor-arg name="wifiDistanceWeight"

value="1.0"/><constructor-arg name="magnetometerDistanceWeight"

value="0.5"/><constructor-arg name="gpsDistanceWeight"

value="0.0"/></bean>

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 27 / 31

Page 28: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - XML

<bean id="positioningService"class="<packages>.KNNSimplePositioning">

<constructor-arg name="distanceCalculator"ref="measurementDistanceCalculator"/>

<constructor-arg name="measurementGateway"ref="MeasurementGateway"/>

<constructor-arg name="k" value="3"/></bean></beans>

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 28 / 31

Page 29: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - Annotation

AnnotationMetadataNo Direct EffectUsage

Information for the compilerCompile-time anddeployment-timeprocessingRuntime processing

Sprint AnnotationsJava BasedXML is not required.Not ReadableConfiguration ???Annotations

@Component@Configuration@Bean

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 29 / 31

Page 30: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - Annotation

@Component

Meta AnnotationCandidates for Auto-detectionLogical Component Name

@Configuration

@Component

Contains @Bean methodsDescribe Application Context

@Bean

MethodReturns with a BeanBean Name

Method NameSpecified namesAlias

Optional Parametersautowire : AutowireinitMethod : StringdestroyMethod: Str.name : String[]value : String[]

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 30 / 31

Page 31: Spring Framework - Basics - Web Application Developmentusers.iit.uni-miskolc.hu/~tothzs/edu/webdev/springBasics.pdf · Spring Framework - Basics Web Application Development Zsolt

Spring Core

Application Context - Annotation

@Configurationpublic class ExampleConfiguration {

@Bean(name = "greetingsService")public GreetingsService initGreetingsService(){return new GreetingsHU();}}

Zsolt Tóth (University of Miskolc) Spring Framework - Basics 2017 31 / 31


Recommended