SlideShare a Scribd company logo
1 of 29
Download to read offline
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring
Chi sono
Donato Andrisani
Scrum Master & Java Developer
Appassionato di metodologie Agile
Mail: donato.andrisani@thinkopen.it
Skype: andrisanidonato
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring
Chi sono
Gabriele Manfredi
Java Developer & Community Leader
Programmatore e giocatore da tavolo seriale
Mail: gabriele.manfredi@objectmethod.it
Skype: gabriele_manfredi
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
a cura di Donato Andrisani e Gabriele Manfredi
Introduzione a Spring Framework
Spring Basics
...and now the Code! pt2
Conclusioni
Estrazione licenza JetBrains
Overview
Concetti base
...and now the Code! pt1
Spring Modules
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
Cosa è Spring?
Spring è un framework che ha come obiettivo principale quello di
gestire la complessità nello sviluppo di applicazioni "enterprise" in
ambiente Java.
0101
INTRODUZIONE
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
0101
Un pò di storia...
https://github.com/spring-projects
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
OVERVIEW
0202
Ma perchè usare Spring?
● Modulare
● Lightweight container
● Integrabile
● POJO based
● Facile da testare
● Alto livello di disaccoppiamento
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
CONCETTIBASE
02
03
IOC e DI
Per comprendere a fondo le potenzialità di Spring
bisogna prima introdurre due concetti fondamentali.
Inversion of Control (IoC) e Dependency Injection (DI).
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
03
Inversion Of Control(IoC)
L’Inversion of Control è un principio architetturale basato sul
concetto di invertire il controllo del flusso di sistema (Control Flow)
rispetto alla programmazione tradizionale.
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
03
Inversion Of Control(IoC)
Il principio sulla quale si basano i framework IoC sono conosciuti
come Hollywood Principle (“Non chiamarci, ti chiameremo noi”).
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
03
Dependency Injection(DI)
Classe A Classe B
dipende da
Scopo : separare il comportamento di una componente dalla
risoluzione delle sue dipendenze.
Motivazioni:
● Progettazione di test difficoltosa
● Riutilizzo scarso della componente
● Scarsa manutenibilità
Le dipendenze vanno minimizzate!!!
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
03
Dependency Injection(DI)
Con il termine Dependency Injection (DI) si intende una specifica
implementazione dello IoC rivolta ad invertire il processo di
risoluzione delle dipendenze, facendo in modo che queste
vengano iniettate dall’esterno
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
03
Dependency Injection(DI)
1. Constructor Injection, dove la dipendenza viene iniettata
tramite l’argomento del costruttore
2. Setter Injection, dove la dipendenza viene iniettata
attraverso un metodo “set”
3. Interface Injection che si basa sul mapping tra interfaccia e
relativa implementazione (non utilizzato in Spring)
public class ConstructorInjection {
private Dependency dep;
public ConstructorInjection(Dependency dep) {
this.dep = dep; }
}
public class SetterInjection {
private Dependency dep;
public void setMyDependency(Dependency dep) {
this.dep = dep; }
}
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
..ANDNOWTHECODE!
04
https://github.com/mad-labs/spring-talk.git
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
SPRINGBASICS
02
05
Architettura di Spring
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
SPRINGBASICS
02
05
Core Container
BeanFactory ApplicationContext
che definisce le
funzionalità di base per
la gestione dei bean
che estende funzionalità
basilari del beanFactory
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
05
BeanFactory/ApplicationContext
ApplicationContext
● eredita funzionalità della
beanFactory
● supporto J2EE
● propagazione eventi
● internazionalizzazione
● utilizzo di risorse
BeanFactory
● implementazione estesa
del Factory method Pattern
● crea i bean necessari
all’applicazione
● inizializza le dipendenze
● gestire il ciclo di vita
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring
05
Configurazione XML
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring
05
Configurazione Java based
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring
05
Configurazione con Annotazioni
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
05
@Scope
● Singleton: viene creata un'istanza del bean per l'intera
applicazione.
● Prototype: viene creata un'istanza del bean ogni volta che
il bean viene iniettato o richiamato dal contesto
dell'applicazione
● Session: in un'applicazione Web, viene creata un'istanza
del bean per ogni sessione.
● Request: in un'applicazione Web, viene creata un'istanza
del bean per ogni richiesta.
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
..ANDNOWTHECODE!
06
https://github.com/mad-labs/spring-talk.git
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
SPRINGMODULES
02
07
Spring Projects
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
SPRING MVC
Il modulo Spring Web MVC implementa il pattern
architetturale Model-View-Controller (MVC) con una serie
di componenti pronte all’uso che consentono codice molto
disaccoppiato.
● Il “Model” è implementato da semplici POJO.
● La “View” implementata da jsp o un linguaggio di
templating analogo
● Il “Controller” che costruisce gli appropriati oggetti
del model e li passa alla view per il rendering.
07
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
02
SPRING MVC
In Spring l’MVC è disegnato intorno a una
DispatcherServlet che amministra tutte le richieste e
risposte HTTP, inviandole ai corrispettivi controller e
attendendo il model e la view da renderizzare:
07
03
04
05
06
07
08
09
0202
01
Java Spring Basics
Introduzione al Framework Spring SPRING MVC
07
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
Conclusioni
CONCLUSIONI08
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09
Domande???
03
04
05
06
07
08
02
01
Java Spring Basics
Introduzione al Framework Spring
09

More Related Content

Similar to Java Spring Basics - Donato Andrisani - Gabriele Manfredi

Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6Michele Aponte
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Giancarlo Valente
 
Struts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupStruts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupFederico Paparoni
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciutaAndrea Dottor
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular jsRiccardo Cardin
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
 
Dependency injection: the good parts
Dependency injection:  the good partsDependency injection:  the good parts
Dependency injection: the good partsMassimo Groppelli
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Michael Denny
 
"Angular CLI: come gestire un progetto" by Mirko Porcu
"Angular CLI: come gestire un progetto" by Mirko Porcu"Angular CLI: come gestire un progetto" by Mirko Porcu
"Angular CLI: come gestire un progetto" by Mirko PorcuThinkOpen
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsAlberto Brandolini
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance ImprovementsMichele Aponte
 

Similar to Java Spring Basics - Donato Andrisani - Gabriele Manfredi (20)

MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)
 
Tesi3
Tesi3Tesi3
Tesi3
 
Struts - Overview, Installazione e Setup
Struts - Overview, Installazione e SetupStruts - Overview, Installazione e Setup
Struts - Overview, Installazione e Setup
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
Mvc e di spring e angular js
Mvc e di   spring e angular jsMvc e di   spring e angular js
Mvc e di spring e angular js
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
Dependency injection: the good parts
Dependency injection:  the good partsDependency injection:  the good parts
Dependency injection: the good parts
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
 
Workshop angular
Workshop angularWorkshop angular
Workshop angular
 
"Angular CLI: come gestire un progetto" by Mirko Porcu
"Angular CLI: come gestire un progetto" by Mirko Porcu"Angular CLI: come gestire un progetto" by Mirko Porcu
"Angular CLI: come gestire un progetto" by Mirko Porcu
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Owasp parte1-rel1.1
Owasp parte1-rel1.1Owasp parte1-rel1.1
Owasp parte1-rel1.1
 
Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
 

Java Spring Basics - Donato Andrisani - Gabriele Manfredi