Upload
gabriel-valencia
View
222
Download
0
Embed Size (px)
DESCRIPTION
Curso de spring 3.0
Citation preview
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 1/164
Curso deSpring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 2/164
¿Quiénes somos?
Carlos Eduardo Ayala LeandroSoftware Developer, +9 años deeperien!ia"adrid # España
!eal$%$%&gmail'!om
Carlos Ayala
(ttp)**software#devlearnings'logspot'!om'es*
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 3/164
Spring Framework
•
ntrodu!!i-n – En la actualidad hay muchos
frameworks y componentes desoftware que facilitan eldesarrollo de aplicacionesempresariales. JS
.ava"a
ilEJ!
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 4/164
Spring Framework
•
ntrodu!!i-n – "as aplicaciones empresariales
de#en tener la capacidad deconectarse con otrasaplicaciones o ser$icios.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 5/164
Spring Framework
•
ntrodu!!i-n – "as aplicaciones de#en ser
altamente adapta#les a loscam#ios tecnol%gicos.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 6/164
Spring Framework
•
/0u1 es SpringFramework2
–
Es una plataforma queproporciona un soporteintegral de las diferentesinfraestructuras que permitenel desarrollo de aplicaciones
Ja$a.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 7/164
Spring Framework
•
/0u1 es SpringFramework2
–
Spring es una plataforma quegestiona las diferentesinfraestructura quenecesitamos para dedicarnossolo al desarrollo Ja$a.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 8/164
Spring Framework
•
/0u1 es SpringFramework2 – Spring nos permite construir
aplicaciones haciendo uso deo#&etos planos Ja$a '(J().
– Spring puede aplicarse paradesarrollar aplicaciones #a&o elmodelo JSE o JEE.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 9/164
Spring Framework
•
3istoria de SpringFramework
–
En el a*o +,,, -o# Johnsonescri#i% los primeroscomponentes de Springmientras tra#a&a#a comoconsultor independiente parasus clientes en la industria/nanciera en "ondres.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 10/164
Spring Framework
•
3istoria de SpringFramework
–
-od ampli% consigui% una formasinteti0ar la forma de utili0ar losdiferentes componentes J+EE.
– ara el +,,1 las aplicaciones
empresariales #asadas en Ja$ade#2an escri#irse usando el 34 Ja$a Ser$let o los EJ!s.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 11/164
Spring Framework
•
3istoria de SpringFramework
–
"as aplicaciones stand5aloneen el +,,1 pod2an escri#irsecon muchas 34s li#res opri$ati$as que se adaptaran alas necesidades del proyecto.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 12/164
Spring Framework
•
3istoria de SpringFramework
–
Se form% un peque*o equipode desarrolladores queespera#a tra#a&ar en e6tenderel framework y un proyectofue creado en Sourceforge enfe#rero de +,,7.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 13/164
Spring Framework
•
3istoria de SpringFramework
–
8espués de tra#a&ar en sudesarrollo durante m9s de una*o lan0aron una primera$ersi%n '1.,) en mar0o de+,,:.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 14/164
Spring Framework
•
3istoria de SpringFramework
–
8espués de este lan0amientoSpring gan% mucha popularidaden la comunidad Ja$a de#idoen parte al uso de Ja$adoc y de
una documentaci%n dereferencia por encima delpromedio de un proyecto dec%digo a#ierto.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 15/164
Spring Framework
•
3istoria de SpringFramework
–
Spring fue duramente criticadoen +,,: y sigue siendo el temade acalorados de#ates.
– 3l tiempo del primer gran
lan0amiento muchosdesarrolladores y l2deres deopini%n $ieron a Spring como uncam#io muy positi$o.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 16/164
Spring Framework
•
3istoria de SpringFramework
–
Spring Framework hi0o queaquellas técnicasdesconocidas para la mayor2ade programadores se $ol$ieran
populares en poco tiempo 'pore&emplo 4o;).
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 17/164
Spring Framework
•
3istoria de SpringFramework
– En el +,,: Spring disfrut% deunas alt2simas tasas deadopci%n y al ofrecer su propioframework de programaci%n
orientada a aspectos '3()consigui% hacer m9s popular suparadigma de programaci%n enla comunidad Ja$a.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 18/164
Spring Framework
•
3istoria de SpringFramework
–
En +,,= este frameworksuper% sus cifras de adapci%nque el anterior y supopularidad continua
aumentando.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 19/164
Spring Framework
•
/0u1 podemos lograr2
–odemos crear un método
que e&ecute una transacci%ncontra la #ase de datos sinhacer uso del 34 de
transacciones.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 20/164
Spring Framework
•
/0u1 podemos lograr2
–odemos crear un método
que realice una llamada a unprocedimiento remoto sinhacer de 34 de llamadas de
procedimientos remotos.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 21/164
Spring Framework
•
/0u1 podemos lograr2 –odemos crear un método
que administre operaciones
sin hacer uso del 34 J>.
–odemos crear un método
que administre el en$2o yrecepci%n de mensa&es sinhacer uso directo del 34
J>S.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 22/164
Spring Framework
•
oC) nversion of Control
– Es un principio en el que el
control de e&ecuci%n delprograma de&a de ser de simismo y pasa a ser de lali#rer2a que implanta el 4o;.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 23/164
Spring Framework
•
oC) nversion of Control
– "as interfaces han
populari0ado este método deprogramaci%n.
–
"as li#rer2as de 4o; poseen unmotor que gestiona todo elcontrol de este principio.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 24/164
Spring Framework
•
oC) nversion of Control – ¿;%mo utili0amos 4o;?
• ;onstruimos nuestra aplicaci%n.
• ;on/guramos cada componentede nuestra aplicaci%n.
• El motor Spring se encarga deinstanciar y e&ecutar loscomponentes de acuerdo a lacon/guraci%n.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 25/164
Spring Framework
•
D) Depende!y n4e!tion
– Es un patr%n de dise*o
orientado a o#&etos en el quese suministran o#&etos a unaclase en lugar de ser la propiaclase quien cree el o#&eto.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 26/164
Spring Framework
•
D) Depende!y n4e!tion – ¿;%mo utili0amos el 84?
• ;onstruimos los componentes dela aplicaci%n.
• ;on/guramos cada dependenciadel componente.
• El motor Spring instancia cadacomponente proporcionandole surespecti$a dependencia.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 27/164
Spring Framework
•
D) Depende!y n4e!tion – @enta&as
• -educe el c%digo pegamentoes decir minimi0a la cantidadde c%digo que usamos escri#irpara unir distintoscomponentes.
• Facilita la e$oluci%n dedependencias sin recompilar elc%digo del proyecto.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 28/164
Spring Framework
•
D) Depende!y n4e!tion – @enta&as
• "as dependencias soncontroladas en un Anico lugarBel motor 4o;.
• Facilita la calidad de la
aplicaci%n al estar alta yf9cilmente integrada conframework de prue#asunitarias y mocks.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 29/164
Spring Framework
•
Ar5uite!tura de Spring
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 30/164
Spring Framework
•
Ar5uite!tura de Spring – Contenedor de oC) ermite
la con/guraci%n de loscomponentes de la aplicaci%ny la administraci%n del ciclo de$ida de los o#&etos Ja$a selle$a a ca#o principalmente a
tra$és de la inyecci%n dedependencias.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 31/164
Spring Framework
•
Ar5uite!tura de Spring – 6rograma!i-n orientada a
aspe!tos) ha#ilita laimplementaci%n de rutinastrans$ersales.
– A!!eso a datos) se tra#a&acon -8!>S usando J8!; o
motores (->. Cam#ién se estaproporcionando soporte (-> a#ase de datos Do SQ".
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 32/164
Spring Framework
•
Ar5uite!tura de Spring – 7esti-n de transa!!ionesB
uni/ca las distintas 34s degesti%n de transacciones y
coordina las transacciones delos o#&etos Ja$a.
– "8CB es un framework #asado
en CC y ser$lets que pro$eeherramientas para el desarrollode aplicaciones we# y ser$icios-ESC.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 33/164
Spring Framework
•
Ar5uite!tura de Spring – Framework de a!!eso
remoto) ermite laimportaci%n y e6portaci%nestilo -; de o#&etos Ja$a atra$és de redes que soporten->4 ;(-!3 y protocolos
#asados en CC incluyendoser$icios we# 'S(3).
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 34/164
Spring Framework
•
Ar5uite!tura de Spring – Conven!i-n sore
Congura!i-n) el m%duloSpring -oo ofrece una soluci%nr9pida para el desarrollo deaplicaciones #asadas enSpring Framework dando
prioridad a la simplicidad sinperder e6i#ilidad.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 35/164
Spring Framework
•
Ar5uite!tura de Spring – 6ro!esamiento por lotes) es
un framework capa0 deprocesar grandes $olumenesde datos. ;on capacidadespara e$aluar el rendimientodel proceso en lote y la
administraci%n de recursos.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 36/164
Spring Framework
•
Ar5uite!tura de Spring – Autenti!a!i-n and
Autori:a!i-n) procesos deseguridad con/gura#les quesoportan un rango deest9ndares protocolosherramientas y pr9cticas a
tra$és del su#proyecto SpringSecurity 'antiguamente 3cegi).
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 37/164
Spring Framework
•
Ar5uite!tura de Spring – Administra!i-n ;emota)
;on/guraci%n de $isi#ilidad ygesti%n de o#&etos Ja$a para lacon/guraci%n local o remota$2a J>.
– <esting) Soporte de clases
para desarrollo de unidades deprue#a e integraci%n.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 38/164
Spring Framework
•
Ar5uite!tura de Spring – "ensa4es) -egistro
con/gura#le de o#&etosreceptores de mensa&es parael consumo transparentedesde la a tra$és de J>S uname&ora del en$2o de mensa&es
so#re las 34 J>S est9ndar.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 39/164
Spring Framework
•
Spring Container –Es un componente
encargado de crear los
o#&etos conectarlos entre sicon/gurarlos y adem9scontrola el ciclo de $ida decada o#&eto mediante el 84.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 40/164
Spring Framework
•
Spring Container –El contenedor Spring se
puede con/gurar mediante
>" anotaciones oprogram9ticamente.
–ara personali0ar estecontenedor de#emosB• ;rear los #eans.
• ;on/gurar los ser$icios de usaracada #ean.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 41/164
Spring Framework
•
Spring Container – ;on/guraci%n del contenedor.
• ;rear >" de con/guraci%n delcontenedor.
• Se instancia cada o#&eto de laaplicaci%n mediante la siguientecon/guraci%n.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="htt!###.sring$rame#or%.orgschemabeans"xmlns!xsi="htt!###.#&.org'001()*+chema-instance"xsi!schema*ocation="htt!###.sring$rame#or%.orgschemabeanshtt!###.sring$rame#or%.orgschemabeanssring-beans.xsd">
<!-- Bean definitions go here --><beans>
<bean id="..." class="..."><!-- collaborators and configuration for this bean go here --> <bean>
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 42/164
Spring Framework
•
Spring Container – 4nstanciaci%n del contenedor
• Es necesario crear un o#&eto del3pplication;onte6t que se adapte a
las caracter2sticas del proyecto.
• Es necesario indicarle al contenedorque /cheros de con/guraci%n
de#er9 le$antar.3pplication;onte6t conte6t G new ;lassathml3pplication;onte6t'
new StringHI Kapplication.6mlL Kdaos.6mlLM)N
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 43/164
Spring Framework
•
Spring Container – Oso del contenedor
• El contenedor dispone de unmétodo que nos permite o#tener
los #eans con/gurados.
• ;uando deseamos utili0ar un #ean
llamamos a este método pasandolelos argumentos o#ligatorios.etStoreSer$ice ser$ice G conte6t.get!ean'LpetStoreLetStoreSer$ice.!lass)N"istPString user"ist G ser$ice.getOsername"ist')N
C get!ean'String name ;lassPC requiredCype)
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 44/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias
• Este patr%n nos permitealcan0ar un c%digo m9sdesacoplado para acometerlos test unitarios y cam#iarpartes del sistema m9s
f9cilmente.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 45/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias
• ;ada componentes de#edeclarar sus dependenciaspero no se encargara deconseguirlas.
• El contenedor Spring es el
encargado de resol$er todaslas dependenciascon/guradas dentro de cada#ean.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 46/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias
• E&emplo sin 84.
pu#lic class Reneratorlaylist
pri$ate SongsFinder songsFinderN
pu#lic Reneratorlaylist') this. songsFinder G new SongsFinder')N M
M
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 47/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias
• >ediante constructor – El #ean que no posee c%digo para
#uscar dependecias 'setters o getters). – El #ean tiene un construtor con
argumentos donde puede pasarsele lasdependecias.
– "a con/guraci%n puede reali0arse
mediante >" o anotaciones.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 48/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias• >ediante constructor
– ;%digo Ja$a
– ;on/guraci%n >"
pu#lic class Reneratorlaylist pu#lic Reneratorlaylist'SongsFinder songsFinder) this. songsFinder G songsFinderN M M
P#ean idGL songsFinder L classGLcom.test. SongsFinderKTP#ean idGLgeneradorlaylistL classGLcom.test. ReneratorlaylistL Pconstructor5arg typeGL com.test. SongsFinder L refGLsongsFinderL PTconstructor5argPT#ean
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 49/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias• >ediante setter
– El #ean que posee c%digo para #uscar
dependecias 'setters o getters). – El #ean puede tener o no constructor
con argumentos.
– "a con/guraci%n puede reali0arsemediante >" o anotaciones.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 50/164
Spring Framework
•
Spring Container – 4nyecci%n de dependencias• >ediante constructor
– ;%digo Ja$a
– ;on/guraci%n >"
pu#lic class Reneratorlaylist pu#lic Reneratorlaylist')M
pu#lic SongsFinder getSongsFinder')M
pu#lic $oid setSongsFinder'SongsFinder songsFinder)M M
P#ean idGL songsFinder L classGLcom.test. SongsFinderKTP#ean idGLgeneradorlaylistL classGLcom.test. ReneratorlaylistL Pproperty nameGLsongsFinderL refGL songsFinderKTPT#ean
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 51/164
Spring Framework
•
Appli!ation Contet – -epresenta al contenedorde 4o; de Spring y es elresponsa#le de instanciar
con/gurar y ensam#lar los#eans.
– El contenedor o#tiene lainformaci%n de qué o#&etos de#ecrear leyendo los metadatos dela con/guraci%n en >"anotaciones o #a&o Ja$a.
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 52/164
Spring Framework
•
Appli!ation Contet – El 3pplication ;onte6t es unainterfa0 que proporciona toda lafuncionalidad del contenedor
Spring. – Entre las implementaciones m9s
utili0adas est9nB• Class6at(=mlAppli!ationContet• FileSystem=mlAppli!ationConte
t• >eAppli!ationContet
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 53/164
Spring Framework
•
Appli!ation Contet – ;lassathml3pplication;onte6t
• Es un contenedor que o#tiene los/cheros de con/guraci%n >"dentro del conte6to del classpathdel proyecto.
• Este contenedor esta dise*ado para
aplicaciones standalone.3pplication;onte6t conte6t G new ;lassathml3pplication;onte6t'Lconte6t.6ml L)N
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 54/164
Spring Framework
•
Appli!ation Contet – FileSystemml3pplication;onte6t
• Es un contenedor que o#tiene los/cheros de con/guraci%n desde unaruta del sistema de /cheros o desdeun O-".
• Este contenedor esta dise*ado paraaplicaciones standalone.
3pplication;onte6t ct6 G new FileSystemml3pplication;onte6t'L#uildTapplication.6mlL)N
i k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 55/164
Spring Framework
•
Appli!ation Contet – Ue#3pplication;onte6t• Es un contenedor de solo lectura
que pro$ee la con/guraci%n Spring
desde una aplicaci%n we# Ja$a.• Este contenedor da soporte al
Ser$let;onte6t.
• Este contenedor esta dise*ado para
aplicaciones we# Ja$a.Ue#3pplication;onte6t ct6 GUe#3pplication;onte6tOtils.getUe#3pplication;onte6t'ser$let;onte6t)N
S i k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 56/164
Spring Framework
•
;esour!es – Ja$a da soporte un soporte#9sico a la o#tenci%n y mane&ode recursos mediante
&a$a.net.O-" – El o#&eto O-" no proporciona un
control a #a&o ni$el del recursoque se intenta controlar con esteo#&eto.
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 57/164
Spring Framework
•
;esour!es – Spring proporciona una interfa0que a#strae al desarrollador delmane&o a #a&o ni$el de un
recurso. – "a interfa0 -esource posee est9
estructuraB,blic inter$ace eso,rce extends n,t+tream+o,rce /
boolean exists2
boolean is3en2
U* getU* thro#s 34xcetion2
File getFile thro#s 34xcetion2
eso,rce createelative+tring relative5ath thro#s 34xcetion2
+tring getFilename2
+tring get6escrition2
7
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 58/164
Spring Framework
•
;esour!es – getnputStream@) "ocali0aa#re el recurso y retorna unstream a#ierto del frecurso.
– eists@) 4ndica si el recursoe6iste f2sicamente.
– isBpen@) 4ndica si el resurso
esta a#ierto o disponi#le. – getDes!ription@) -etorna la
descripci%n del recurso.
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 59/164
Spring Framework
•
;esour!es – mplementa!iones de
;e!ursos• rl;esour!e) esta
implementaci%n de &a$a.net.O-" da soporte arecursos en CC FC etc.
•
Class6at(;esour!e) Estaimplementaci%n proporcionarecursos en el 9m#ito delclasspath.
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 60/164
Spring Framework
•
;esour!es – mplementa!iones de;e!ursos• FileSystem;esour!e) Esta
implementaci%n proporcionarecursos en el 9m#ito delsistema de /cheros.
• ServletContet;esour!e) esuna implementaci%n de permiteo#tener recursos desde la rutaprincipal de una aplicaci%n we#.
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 61/164
Spring Framework
•
;esour!es – mplementa!iones de;e!ursos• nputStream;esour!e) es
una implementaci%n queo#tiene el recurso en elformato 4nputStream.
•
yteArray;esour!e) es unaimplementaci%n que o#tiene elrecuro en el formato!yte3rray4nputStream.
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 62/164
Spring Framework
•
;esour!e Loader – Es una interfa0 que nos permitecargar los recursos quedeseamos utili0ar.
– odemos llamar a recursos con
el conte6to de aplicaci%nindic9ndole la u#icaci%n.
public interface ResourceLoader { eso,rce geteso,rce+tring location2
7
-esource template G ct6.get-esource'"some/resource/path/myTemplate.txt")N
S i F k
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 63/164
Spring Framework
•
;esour!e Loader – odemos o#tener recursosespeci/cos mediante esta#lecerun pre/&o al solicitar el mismo.
-esource template Gct6.get-esource'“classpath:some/resource/path/myTemplate.txt")N
6re4o Epli!a!i-n
classpathB ;arga un recurso desde el classpath.
/leB ;arga un recurso como un O-" desde el sistema dearchi$os.
httpB ;arga un recurso como un O-".
'ninguno) 8epende de el 3pplication;onte6t
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 64/164
Spring Framework
•
ean Fa!tory – Es una implementaci%n delpatr%n Factory que proporcionaSpring para la creaci%n de los
#eans con/gurados en elconte6to.
– ara construir un #ean desdeeste componente de#emos
proporcionar el nom#re del #ean.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 65/164
Spring Framework
• ean Fa!tory – "os o#&etos que puede de$ol$er el
!ean factory cumplen lossiguientes patronesB•
SingletonB se crea y retorna la mismainstancia as2 se llame m9s de una $e0.
• rototypeB se crea y retorna tantasinstancias como solicitudes serealicen.
– "a implementaci%n m9s usada esml!eanFactory que reci#e el/chero de con/guraci%n >".
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 66/164
Spring Framework
•
ean Fa!tory – El ml!eanFactory se creapasandole un 4nputStream del/chero de con/guraci%n.
– ara o#tener un #ean se de#ellamar al método get pasandoleel nom#re del #ean.
eanFactor9 b$ = ne# (mleanFactor9ne# Filen,t+tream:beans.xml;2
Oser8ao user8ao G 'Oser8ao) #f.get'Kuser8aoV)N
Spring Frame ork
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 67/164
Spring Framework
•
="L ean Conguration – "a columna $erte#ral de todoproyecto Spring es lacon/guraci%n de sus #eans.
– Ona de las formas decon/guraci%n disponi#les enSpring es >".
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 68/164
Spring Framework
•
="L ean CongurationAtriuto Des!rip!i-n
class'-equerido)
Dom#re de clase completo del cual se deseacrear un o#&eto.
name 4denti/cador del o#&eto.
scope 3lcance con que ser9 creado el o#&eto.
constructor5arg
3rgumento del constructor
$alue @alor de un atri#uto del o#&eto
ref -eferencia de o#&eto. ;orresponde con el namede un o#&eto.
la0y5init >étodo que indica cuando de#e instanciarse elo#&eto.
init5method >étodo que se in$oca al crear un o#&eto.
destroy5method
>étodo que se in$oca al destruir un o#&eto.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 69/164
Spring Framework
• ="L ean Conguration – E&emplo
P?6ml $ersionGL1.,L encodingGLOCF5WL?P#eans 6mlnsGLhttpBTTwww.springframework.orgTschemaT#eansL6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL6siBschema"ocationGLhttpBTTwww.springframework.orgTschemaT#eanshttpBTTwww.springframework.orgTschemaT#eansTspring5#eans.6sdL
PX55 3 simple #ean de/nition 55 P#ean idGL...L classGL...L
PX55 colla#orators and con/guration for this #ean go here 55 PT#ean PX55 3 #ean de/nition with la0y init set on 55 P#ean idGL...L classGL...L la0y5initGLtrueL
PX55 colla#orators and con/guration for this #ean go here 55 PT#ean
PX55 3 #ean de/nition with initiali0ation method 55P#ean idGL...L classGL...L init5methodGL...L
PX55 colla#orators and con/guration for this #ean go here 55PT#eanPX55 3 #ean de/nition with destruction method 55P#ean idGL...L classGL...L destroy5methodGL...L
PX55 colla#orators and con/guration for this #ean go here 55PT#eanPX55 more #ean de/nitions go here 55
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 70/164
Spring Framework
• Annotations – El documento de con/guraci%n en
>" suele ser complicado de hacery tam#ién de mantener.
–
-equiere conocer en gran detallecuales son los >" Schemas de losm%dulos de Spring que deseamosutili0ar.
– Si se modulari0a la con/guraci%nes necesario controlar lasimportaciones de los documentosde con/guraci%n.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 71/164
Spring Framework
•
Annotations – "a con/guraci%n por anotacionessuele a*adir a las clases Ja$ametainformaci%n que aporta
funcionalidad que el conte6to dela aplicaci%n utili0a comocon/guraci%n.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 72/164
Spring Framework
•
Annotations – ara hacer uso de lacon/guraci%n medianteanotaciones es necesario aplicar
esta con/guraci%n mediante>".<?xml version="1.0" encoding="UTF-8"?><beans xmlns="htt!###.sring$rame#or%.orgschemabeans" xmlns!xsi="htt!###.#&.org'001()*+chema-instance" xmlns!context="htt!###.sring$rame#or%.orgschemacontext" xsi!schema*ocation="htt!###.sring$rame#or%.orgschemabeans htt!###.sring$rame#or%.orgschemabeanssring-beans.xsd htt!###.sring$rame#or%.orgschemacontext htt!###.sring$rame#or%.orgschemacontextsring-
context.xsd">
<context!annotation-con$ig>
<beans>
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 73/164
Spring Framework
•
Annotations – &;e5uired) esta anotaci%n esusada para indicar que unapropiedad de#e tener un $alor
o#ligatorio. – Esta anotaci%n de#e ser utili0ada
en métodos setter.public class SimpleMovieLister {
private MovieFinder movieFinder;
e,ired public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; 7 // ...7
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 74/164
Spring Framework
•
Annotations – &;e5uired) esta anotaci%n esusada para indicar que unapropiedad de#e tener un $alor
o#ligatorio. – Esta anotaci%n de#e ser utili0ada
en métodos setter.public class SimpleMovieLister {
private MovieFinder movieFinder;
e,ired public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; 7 // ...7
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 75/164
Spring Framework
•
Annotations – &Autowired) esta anotaci%ninyecta dependecias a tra$és deatri#utos setter o constructores.
– 3notaci%n Y3utowired dentro deatri#utos.import org.springframeor!.beans.factor".annotation.#utoired;
public class $e%t&ditor { ,to#ired
private Spell'hec!er spell'hec!er;
public $e%t&ditor() {
public Spell'hec!er getSpell'hec!er( ){ return spell'hec!er; public void spell'hec!(){ spell'hec!er.chec!Spelling();
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 76/164
Spring Framework
•
Annotations – 3notaci%n Y3utowired dentro deconstructores.import org.springframeor!.beans.factor".annotation.#utoired;
public class $e%t&ditor {
private Spell'hec!er spell'hec!er;
,to#iredpublic $e%t&ditor(Spell'hec!er spell'hec!er){
S"stem.out.println(*nside $e%t&ditor constructor. );this.spell'hec!er = spell'hec!er;
public void spell'hec!(){spell'hec!er.chec!Spelling();
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 77/164
Spring Framework
•
Annotations – 3notaci%n Y3utowired dentro desetters.
import org.springframeor!.beans.factor".annotation.#utoired;
public class $e%t&ditor {
private Spell'hec!er spell'hec!er;
,to#iredpublic void setSpell'hec!er( Spell'hec!er spell'hec!er ){
this.spell'hec!er = spell'hec!er;
public Spell'hec!er getSpell'hec!er( ) {return spell'hec!er;
public void spell'hec!() {spell'hec!er.chec!Spelling();
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 78/164
Spring Framework
•
Annotations – &0ualier) esta anotaci%ninyecta dependecias conidenti/cadores especi/cos donde
se indiqueimport org.springframeor!.beans.factor".annotation.#utoired;import org.springframeor!.beans.factor".annotation.+ualifier;
public class ,rofile {
,to#ired@,ali$ier"st,dent1"private Student student;
public ,rofile(){
S"stem.out.println(*nside ,rofile constructor. );
public void print#ge() {S"stem.out.println(#ge - student.get#ge() );
public void print/ame() {S"stem.out.println(/ame - student.get/ame() );
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 79/164
Spring Framework
•
S6EL#ased !onguration – Es un lengua&e de e6presionesque permite la consulta ymanipulaci%n de o#&etos en
tiempo real. – Este lengua&e pro$ee soporte a
las siguientes funcionalidadesB• E6presiones literales.
• E6presiones regulares.
• 4n$ocaci%n de métodos.
• Etc
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 80/164
Spring Framework
•
S6EL#ased !onguration – E6presiones literales
– E6presiones #ooleanas
– 3cceso a funciones
– 3cceso a atri#utos de #ean
Z[ola SE"\MA/1'B.'B7
Z1+ ]M
Z[ola SE"\.to"ower;ase')M
Zusuario.nom#reM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 81/164
Spring Framework
•
S6EL#ased !onguration – E6presiones para gesti%n decolecciones
– E6presiones de clases
– E6presiones condicionales
– ;reando instancia
Zempresa.empleadosH+IM
ZC'&a$a.lang.>ath)MZC'&a$a.lang.>ath).random')M
Zusuario.edad 1W ? trueB falseM
Znew 8ate')M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 82/164
Spring Framework
• Ci!lo de vida del ean – Es la secuencia de operaciones a
las que se $en sometidos los#eans desde el punto de $ista de
su creaci%n y posteriordestrucci%n.
– Spring proporciona mecanismosadecuados para que lasaplicaciones puedan monitori0ary reaccionar a estos e$entos atra$és de métodos callback .
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 83/164
Spring Framework
• Ci!lo de vida del ean – ni!iali:a!i-n
• On #ean puede ser noti/cado de suiniciali0aci%n por parte de Spring
implementando la interfacenitiali:ingean.
• Esta interface tiene un métodopA#lico after6ropertiesSet que sein$oca cuando todas laspropiedades del #ean se haniniciali0ado.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 84/164
Spring Framework
• Ci!lo de vida del ean – ni!iali:a!i-n
• El control de la iniciali0aci%n pormedio de esta interfa0 hace que el
#ean sea dependiente de Spring.import org.springframework.#eans.factory.4nitiali0ing!eanN
pu#lic class i00eria implements i00eriaSer$ice nitiali:ingean
pu#lic $oid afterropertiesSet') M
...M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 85/164
Spring Framework
• Ci!lo de vida del ean – ni!iali:a!i-n
• ara e$itar dicha dependencia sepuede utili0ar el atri#uto init#
met(od dentro de la declaraci%ndel #ean en el /chero >".
import org.springframework.#eans.factory.4nitiali0ing!eanN
pu#lic class i00eria implements i00eriaSer$ice
pu#lic $oid init') M ...M
P#ean idGLpi00eriaL classGL...L init#met(odinit
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 86/164
Spring Framework
• Ci!lo de vida del ean – Destru!!i-n
• E6iste unainterface Disposaleean que
proporciona un métodollamado destroy in$ocado porSpring cuando se destruye lainstancia de un #ean.
• Cam#ién se proporciona un métodode destrucci%n mediantecon/guraci%n.P#ean idGLpi00eriaL classGL...L destroy#met(odGeit
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 87/164
Spring Framework
• Ci!lo de vida del ean – "1todos por defe!to
• 4ncluso se da soporte a lainiciali0aci%n y destrucci%n
generali0ada de o#&etos mediantecon/guraci%n desde el tag K#eansV.
P#eans default#init#met(odinit default#destroy#met(odeit...
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 88/164
Spring Framework
• Ci!lo de vida del ean – Anota!iones
• >ediante la con/guraci%n #a&oanotaciones se dispone de
&6ostContru!t y &6reDestroyque cumplen con las funciones delos métodos antes descritos .import &a$a6.annotation.ost;onstructNimport &a$a6.annotation.re8estroyN
pu#lic a#stract class i00eria implements i00eriaSer$ice
Yost;onstruct pu#lic $oid init') M Yre8estroy pu#lic $oid e6it') MM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 89/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – Es un paradigma de
programaci%n relati$amente
reciente cuya intenci%n espermitir una adecuadamodulari0aci%n de las
aplicaciones y posi#ilitar laseparaci%n de conceptos.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 90/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – /0u1 fun!ionalidades
pueden !onvertirse en
aspe!tos2• "as funcionalidades comunes
pueden ser aspectos.
•
"as funcionalidades propias deun m%dulo puede seraspectos.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 91/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – <1rminos !omunesCon!epto Des!rip!i-n
3spect Es la funcionalidad que se cru0a a lo
largo de la aplicaci%n que se $a aimplementar de forma modular yseparada del resto de sistema.
Jointpoint Es un punto de e&ecuci%n dentro delsistema donde el aspecto esconectado.
3d$ice Es la implementaci%n del aspecto.
ointcut 8e/ne los conse&os que se aplicarana cada punto de cruce.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 92/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – <ipos de aspe!tosCon!epto Des!rip!i-n
!efore El aspecto se e&ecuta antes de e&ecutarse elmétodo que lo pro$oca.
3fter El aspecto se e&ecuta después de e&ecutarse elmétodo que lo pro$oca independiente delé6ito o fracaso del método.
3fter5running El aspecto se e&ecuta después de que elmétodo que lo pro$oca retorne un resultado.
3fter5throwing El aspecto se e&ecuta después de de$ol$er
una e6cepci%n el método que lo pro$oca.3round Este aspecto puede reali0ar acciones antes y
después de in$ocar el método interceptado.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 93/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – Congura!i-n asado en ="L
• El >" de con/guraci%n Spring
de#e tener un nue$o esquema ynamespace que da el soporte al3(.
P?6ml $ersionGL1.,L encodingGLOCF5WL?P#eans 6mlnsGhttpBTTwww.springframework.orgTschemaT#eans
6mlnsB6siGhttpBTTwww.w7.orgT+,,1T>"Schema5instance 6mlnsBaopGhttpBTTwww.springframework.orgTschemaTaop
6siBschema"ocationGLhttpBTTwww.springframework.orgTschemaT#eanshttpBTTwww.springframework.orgTschemaT#eansTspring5#eans57.,.6sd
httpBTTwww.springframework.orgTschemaTaophttpBTTwww.springframework.orgTschemaTaopTspring5aop57.,.6sd L
PX55 #ean de/nition ^ 3( speci/c con/guration 55
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 94/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de aspe!to
• ara con/gurar todo lo referente a
aspectos de#emos usar los tags conel namespace KaopV.
• "a con/guraci%n de un aspecto sereali0a con le tag KPaopBcon/gVPaopBcon/g
PaopBaspect idGLmy3spectL refGLa!eanL
...PTaopBaspectPTaopBcon/gP#ean idGLa!eanL classGL...L
...PT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 95/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de aspe!to
• En el tag KPaopBaspectV
identi/camos el aspecto eindicamos la instancia del #ean queimplementa el aspecto.
PaopBcon/gPaopBaspect idGLmy3spectL refGLa!eanL...PTaopBaspect
PTaopBcon/gP#ean idGLa!eanL classGL...L
...PT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 96/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de aspe!to
• En el tag KPaopBaspectV
identi/camos el aspecto eindicamos la instancia del #ean queimplementa el aspecto.
PaopBcon/gPaopBaspect idGLmy3spectL refGLa!eanL...PTaopBaspect
PTaopBcon/gP#ean idGLa!eanL classGL...L
...PT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 97/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de punto de
!ru!e• El tag KPaopBpointcutV podemos
con/gurar el punto de cruce.
• En este tag identi/camos el puntode corte e indicamos la e6presi%n
de cone6i%n.
PaopBcon/g PaopBaspect idGLmy3spectL refGLa!eanL PaopBpointcut idGL#usinessSer$iceL e6pressionGLe6ecution'_com.6y0.myapp.ser$ice._._'..))LT
... PTaopBaspectPTaopBcon/gP#ean idGLa!eanL classGL...L
...PT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 98/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de punto de !ru!e
• En la e6presi%n de cone6i%n podemos
indicar los siguientes puntosB – >odi/cador de acceso.
– ;lase de componente que de#e serinterceptado.
– >étodo que de#e ser interceptado.
• En la con/guraci%n de e6presiones sepuede usar el comod2n K_V comoindicador de todo.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 99/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de punto de
!ru!e• E&ecuci%n de un método pA#lico.
• E&ecuci%n de cualquier método queempiece por set_
e6ecution'pu#lic _ _'..))
e6ecution'_ set_'..))
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 100/164
Spring Framework
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de punto de
!ru!e• E&ecuci%n de cualquier método de la
clase K3ccountSer$iceV.
• E&ecuci%n de cualquier método de
las clases dentro del paqueteKser$iceV.
e6ecution'_ com.6y0.ser$ice..'..))
e6ecution'_ com.6y0.ser$ice...'..))
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 101/164
Sp g a e o
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de advi!e
• efore –
point!ut#ref B referencia del punto decorte.
– met(odB método del #ean que escuchael aspecto.
PaopBaspect idGL#eforeE6ampleL refGLa!eanL PaopB#efore pointcut5refGLdata3ccess(perationL methodGLdo3ccess;heckLT ...PTaopBaspect
pu#lic $oid do3ccess;heck') M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 102/164
p g
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de advi!e
• After –
point!ut#ref B referencia del punto decorte.
– met(odB método del #ean que escuchael aspecto.
PaopBaspect idGL#eforeE6ampleL refGLa!eanL PaopBafter pointcut5refGLdata3ccess(perationL methodGLdo3ccess;heckLT ...PTaopBaspect
pu#lic $oid do3ccess;heck') M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 103/164
p g
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de advi!e
• After#returning –
point!ut#ref B referencia del punto decorte.
– returningB o#&eto que retorna elmétodo interceptado.
– met(odB método del #ean que escucha
el aspecto.
PaopBaspect idGL#eforeE6ampleL refGLa!eanL PaopBafter5returning
pointcut5refGLdata3ccess(perationK returningGKret@alV methodGLdo3ccess;heckLT ...PTaopBaspect
pu#lic $oid do3ccess;heck'(#&ect ret@al) M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 104/164
p g
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de advi!e
• After#t(rowing –
point!ut#ref B referencia del punto decorte.
– t(rowingB e6cepci%n que lan0a elmétodo interceptado.
– met(odB método del #ean que escucha
el aspecto.
PaopBaspect idGL#eforeE6ampleL refGLa!eanL PaopBafter5throwing
pointcut5refGLdata3ccess(perationK throwingGKretE6ceptionV methodGLdo3ccess;heckLT ...PTaopBaspect
pu#lic $oid do3ccess;heck'E6ception retE6ception) M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 105/164
p g
• Aspe!t Briented6rogramming @AB6 – De!lara!i-n de advi!e
• Around –
point!ut#ref B referencia del punto decorte.
– met(odB método del #ean que escuchael aspecto.
PaopBaspect idGLaroundE6ampleL refGLa!eanL PaopBaround pointcut5refGL#usinessSer$iceL methodGLdo!asicro/lingLT ...
PTaopBaspect
puli! B4e!t doasi!6roling@6ro!eeding.oin6oint p4p t(rows <(rowaleH // start stopwatch (#&ect ret@al G p&p.proceed')N // stop stopwatch return ret8alIM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 106/164
p g
• Aspe!t Briented6rogramming @AB6 – Congura!i-n mediante
Anota!iones• tili:amos la !ongura!i-n ="L
• De!laramos el aspe!to.
package org.6y0N
import org.aspect&.lang.annotation.3spectN
Y3spectpu#lic class "ogging
M
PaopBaspect&5autopro6yT
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 107/164
p g
• Aspe!t Briented6rogramming @AB6 – Congura!i-n mediante
Anota!iones• De!laramos el punto de !ru!e.
package org.6y0N
import org.aspect&.lang.annotation.3spectN
Y3spectpu#lic class "ogging
Yointcut'Le6ecution'_ com.tutorialspoint._._'..))L)pri$ate $oid select3ll')M
M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 108/164
p g
• Aspe!t Briented6rogramming @AB6 – Congura!i-n mediante
Anota!iones• De!laramos el punto de !ru!e.
package org.6y0N
import org.aspect&.lang.annotation.3spectN
Y3spectpu#lic class "ogging
Yointcut'Le6ecution'_ com.tutorialspoint._._'..))L)pri$ate $oid select3ll')M
Y!efore'Lselect3ll')L)
pu#lic $oid #efore3d$ice')System.out.println'LRoing to setup student pro/le.L)N
M
Y3fter'Lselect3ll')L)pu#lic $oid after3d$ice')
System.out.println'LStudent pro/le has #een setup.L)NM
M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 109/164
p g
• Aspe!t Briented6rogramming @AB6 – Congura!i-n mediante
Anota!iones• De!laramos advi!es.
package org.6y0N
import org.aspect&.lang.annotation.3spectN
Y3spectpu#lic class "ogging
Yointcut'Le6ecution'_ com.tutorialspoint._._'..))L)pri$ate $oid select3ll')M
Y!efore'Lselect3ll')L)
pu#lic $oid #efore3d$ice')System.out.println'LRoing to setup student pro/le.L)N
M
Y3fter'Lselect3ll')L)pu#lic $oid after3d$ice')
System.out.println'LStudent pro/le has #een setup.L)NM
M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 110/164
p g
• Aspe!t Briented6rogramming @AB6 – Congura!i-n mediante
Anota!iones• De!laramos advi!es.
package org.6y0N
import org.aspect&.lang.annotation.3spectN
Y3spectpu#lic class "ogging
Yointcut'Le6ecution'_ com.tutorialspoint._._'..))L)pri$ate $oid select3ll')M
Y3fter-eturning'pointcut G Lselect3ll')L returningGLret@alL)
pu#lic $oid after-eturning3d$ice'(#&ect ret@al) System.out.println'L-eturningBL ` [email protected]') )N
M
Y3fterChrowing'pointcut G Lselect3ll')L throwing G Le6L)pu#lic $oid 3fterChrowing3d$ice'4llegal3rgumentE6ception e6)
System.out.println'LChere has #een an e6ceptionB L `e6.toString'))N
MM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 111/164
p g
• Data – Data A!!ess 6attern
• Es un patr%n que aisla la l%gicade #a&o ni$el del acceso a
datos de la l%gica de alto ni$eldel negocio.
• Este patr%n se #asa en el usode una interfa0 queproporciona los prototipos del;-O8.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 112/164
p g
• Data – Data A!!ess 6attern
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 113/164
p g
• Data – <ransa!!iones
• Ona transacci%n es uncon&unto de instrucciones que
se e&ecutan en #loque.• "as instrucciones de una
transacci%n se e&ecutan todas oninguna.
• ;uando una transacci%n terminase hace commit so#re ella sifalla se hace rollback .
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 114/164
• Data – ACD) 6rin!ipios de
transa!!iones• At-mi!oB Codas las
operaciones en una transacci%nocurrir9 si la todas terminan sue&ecuci%n correctamente oninguna de ellas ocurrir9 si una
de estas falla en cuyo caso sedeshacen todos los cam#iosefectuados.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 115/164
• Data – ACD) 6rin!ipios de
transa!!iones• ConsistenteB ;uando termina
la transacci%n correcta oincorrectamente el sistema esde&ado en un estadoconsistente con el negocio quemodela.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 116/164
• Data – ACD) 6rin!ipios de
transa!!iones• Aislado) "as transacciones de#e
permitir a $arios usuarios tra#a&arcon los mismos datos sin que cadatra#a&o de un usuarios se enredecon el de los dem9s. or lo tantolas transacciones de#en ser aisladas
unas de las otras pre$iendo de estamanera la lectura yTo escrituraconcurrente de los datos.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 117/164
• Data – ACD) 6rin!ipios de
transa!!iones• DuraleB Ona $e0 que una
transacci%n concluye elresultado de una transacci%nde#e persistir y de#eso#re$i$ir a cualquier tipo defallo del sistema.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 118/164
• Data – <ransa!!iones en Spring
• Spring pro$ee soporte paraadministraci%n de
transacciones declarati$asy programa#les.
• Spring puede utili0ar elsoporte transaccional ofrecidopor el mecanismo depersistencia como J8!;i#ernate o J3.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 119/164
• Data – <ransa!!iones en Spring
• Si la aplicaci%n utili0a $ariosrecursos Spring soporta
transacciones distri#uidas 3utili0ando algunaimplementaci%n JC3 deterceros.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 120/164
• Data – <ransa!!iones
programJti!as• "a forma m9s adecuada de
implantar una transacci%nprogram9tica es medianteanotaciones.
• "a anotaci%n YCransactionalde#e ser u#icada en laca#ecera de un métodopA#lico.
YCransactionalpu#lic $oid e6ecCransaction') M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 121/164
• Data – Kmito de una transa!!i-n
• Si tenemos un métodocon &<ransa!tional latransacci%n empe0ar9 en la primera
l2nea del método y terminar9 &ustodespués de la Altima.
• Si dentro de esto método e6istenllamadas a otros métodos estos
otros métodos son llamados dentrode la transacci%n sin necesidad deanotarlos con &<ransa!tional'
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 122/164
• Data – 6ropaga!i-n de una
transa!!i-n• Es la estrategia de
administraci%n de latransacci%n.
• or medio de esta estrategiase de/ne si la creaci%n de latransacci%n es autom9tica o seutili0ar9 alguna pre$iamentecreada.
YCransactional' propagation G ropagation.-EQO4-ESDEU )pu#lic $oid e6ecCransaction') M
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 123/164
• Data – <ipos de propaga!i-n
• 6;B6A7A<BM;E0;ED 5 Es laque $iene por defecto as2 que no esnecesaria especi/carla. Si e6istetransacci%n la apro$echa y sino lacrea.
• ;E0;ESME> 5 3#re unatransacci%n nue$a y pone en
suspenso la anterior. Ona $e0 elmétodo marcado como-EQO4-ESDEU termina se $uel$e ala transacci%n anterior.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 124/164
• Data – <ipos de propaga!i-n
• 6;B6A7A<BMS66B;<S 5 Sie6iste transacci%n la apro$echa
sino no crea ninguna.• 6;B6A7A<BM"ADA<B;N 5 Si
no e6iste una transacci%n a#ierta selan0a una e6cepci%n. ay gente queanota sus 83( con esta opci%n.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 125/164
• Data – <ipos de propaga!i-n
• 6;B6A7A<BME8E; 5 Si e6isteuna transacci%n a#ierta se lan0auna e6cepci%n. Do se me ocurreningAn e&emplo donde esto seanecesario pero seguro que algunohay.
• 6;B6A7A<BMB<MS66B;<ED 5 Si e6iste una transacci%n la poneen suspenso la transacci%n sereacti$a al salir del método.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 126/164
• Data – Commit y ;olla!k
• On método YCransactionalcuando termina todas sus
instrucciones culminahaciendo un commit.
• ;uando un métodoYCransactional falla lan0andouna e6cepci%n que hereda de-untimeE6ception se reali0aun roll#ack.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 127/164
• Data – Commit y ;olla!k
• ay momentos que noqueremos que se haga
un rollback para algunae6cepci%n en concreto o locontrario no queremos quehaga un commit cuando se
lan0a una e6cepci%n que noherede de ;untimeE!eption
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 128/164
• Data – Commit y ;olla!k
• ara esto tenemos laspropiedades no;olla!kFor y
rolla!kFor con estasopciones podemos con/gurarel commit y el rollback segAnnuestras necesidades.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 129/164
• Data – Commit y ;olla!k
• no;olla!kFor
• rolla!kForYCransactional'roll#ackForGFileDotFoundE6ception.classM)pu#lic $oid ha03lgoCransaccionalmente')
TT Soy transaccionalXM
YCransactional'no-oll#ackForGDum#erFormatE6ception.class3rithmeticE6ception.classM)pu#lic $oid ha03lgoCransaccionalmente') TT Soy transaccionalXM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 130/164
• Data – <ransa!!iones de!larativas
• "as transacciones declarati$as sede#en con/gurar asociadas a unacone6i%n a la fuente de datos.
P#ean nameGLhi#ernateCemplateLclassGLorg.springframework.orm.hi#ernate7.i#ernateCemplateL Pconstructor5arg refGLsessionFactoryLTPT#ean P#ean nameGLtransaction>anagerLclassGLorg.springframework.orm.hi#ernate7.i#ernateCransaction>anagerL Pproperty nameGLdataSourceL refGLdataSourceL T Pproperty nameGLsessionFactoryL refGLsessionFactoryL TPT#ean P#ean nameGLtransactionCemplateLclassGLorg.springframework.transaction.support.CransactionCemplateL Pconstructor5arg refGLtransaction>anagerLTPT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 131/164
• Data – <ransa!!iones de!larativas
• "as transacciones declarati$as sede#en con/guran en #ase aaspectos.P?6ml $ersionGL1.,L encodingGLOCF5WL?
P#eans 6mlnsGLhttpBTTwww.springframework.orgTschemaT#eansL 6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL 6mlnsBt6GLhttpBTTwww.springframework.orgTschemaTt6L 6mlnsBaopGLhttpBTTwww.springframework.orgTschemaTaopL 6siBschema"ocationGLhttpBTTwww.springframework.orgTschemaT#eans httpBTTwww.springframework.orgTschemaT#eansTspring5#eans.6sd httpBTTwww.springframework.orgTschemaTt6 httpBTTwww.springframework.orgTschemaTt6Tspring5t6.6sd httpBTTwww.springframework.orgTschemaTaophttpBTTwww.springframework.orgTschemaTaopTspring5aop.6sdL
PaopBcon/g
PaopBad$isor pointcutGLe6ecution'pu#lic _ demo.dao._.create'..))L ad$ice5refGLt65ad$iceL T PTaopBcon/g
Pt6Bad$ice idGLt65ad$iceL Pt6Battri#utes Pt6Bmethod nameGL_L propagationGL-EQO4-E8L isolationGL8EF3O"CL roll#ack5forGLChrowa#leL no5roll#ack5forGL!usinessE6ceptionL T Pt6Bmethod nameGLget_L propagationGLSO(-CSL read5onlyGLtrueL T PTt6Battri#utes PTt6Bad$ice
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 132/164
• Data – <ransa!!iones de!larativas
• "as transacciones declarati$as sede#en con/guran en #ase aaspectos.P?6ml $ersionGL1.,L encodingGLOCF5WL?
P#eans 6mlnsGLhttpBTTwww.springframework.orgTschemaT#eansL 6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL 6mlnsBt6GLhttpBTTwww.springframework.orgTschemaTt6L 6mlnsBaopGLhttpBTTwww.springframework.orgTschemaTaopL 6siBschema"ocationGLhttpBTTwww.springframework.orgTschemaT#eans httpBTTwww.springframework.orgTschemaT#eansTspring5#eans.6sd httpBTTwww.springframework.orgTschemaTt6 httpBTTwww.springframework.orgTschemaTt6Tspring5t6.6sd httpBTTwww.springframework.orgTschemaTaophttpBTTwww.springframework.orgTschemaTaopTspring5aop.6sdL
PaopBcon/g
PaopBad$isor pointcutGLe6ecution'pu#lic _ demo.dao._.create'..))L ad$ice5refGLt65ad$iceL T PTaopBcon/g
Pt6Bad$ice idGLt65ad$iceL Pt6Battri#utes Pt6Bmethod nameGL_L propagationGL-EQO4-E8L isolationGL8EF3O"CL roll#ack5forGLChrowa#leL no5roll#ack5forGL!usinessE6ceptionL T Pt6Bmethod nameGLget_L propagationGLSO(-CSL read5onlyGLtrueL T PTt6Battri#utes PTt6Bad$ice
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 133/164
• Data – .DC <emplate
• Spring proporciona uncon&unto de funcionalidades
que facilitan el tra#a&o con J8!;.
• or medio de estasfuncionalidades podemostra#a&ar con la l%gica de #a&oni$el de #ase de datos deforma m9s sencilla.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 134/164
• Data – Congurando Data Sour!e
• or medio de la clase8ri$er>anager8ataSource
podemos instanciar undatasource estandar capa0 deconectarse a cualquier #ase dedatos.
P#ean idGLdataSourceLclassGLorg.springframework.&d#c.datasource.8ri$er>anager8ataSourceL
Pproperty nameGLdri$er;lassDameL$alueGLcom.mysql.&d#c.8ri$erLT Pproperty nameGLurlL$alueGL&d#cBmysqlBTTlocalhostB77,bTCESCLT Pproperty nameGLusernameL $alueGLrootLT Pproperty nameGLpasswordL $alueGLpasswordLTPT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 135/164
• Data – Congurando Data Sour!e
• or medio de la clase8ri$er>anager8ataSource
podemos instanciar undatasource estandar capa0 deconectarse a cualquier #ase dedatos.
P#ean idGLdataSourceLclassGLorg.springframework.&d#c.datasource.8ri$er>anager8ataSourceL
Pproperty nameGLdri$er;lassDameL$alueGLcom.mysql.&d#c.8ri$erLT Pproperty nameGLurlL$alueGL&d#cBmysqlBTTlocalhostB77,bTCESCLT Pproperty nameGLusernameL $alueGLrootLT Pproperty nameGLpasswordL $alueGLpasswordLTPT#ean
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 136/164
• Data – E4e!utando senten!ias
• Sentencia que retorna un enterolargo.
• Sentencia que retorna un entero.String SQ" G Lselect count'_) from StudentLNint row;ount G &d#cCemplate(#&ect.queryFor4nt' SQ" )N
String SQ" G Lselect count'_) from StudentLNlong row;ount G &d#cCemplate(#&ect.queryFor"ong' SQ" )N
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 137/164
• Data – E4e!utando senten!ias
• Sentencia din9mica conpar9metro.
• Sentencia din9mica con
par9metros de entrada y salida.
String SQ" G Lselect name from Student where id G ?LNString name G &d#cCemplate(#&ect.queryFor(#&ect'SQ" new (#&ectHI1,MString.class)N
String SQ" G Lselect age from Student where id G ?LNint age G &d#cCemplate(#&ect.queryFor4nt'SQ" new (#&ectHI1,M)N
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 138/164
• Data – E4e!utando senten!ias
• Sentencia que de$uel$e unregistro asociado a un #ean.
String SQ" G Lselect _ from Student where id G ?LNStudent student G &d#cCemplate(#&ect.queryFor(#&ect'SQ" new (#&ectHI1,M new Student>apper'))Npu#lic class Student>apper implements -ow>apperPStudent pu#lic Student map-ow'-esultSet rs int rowDum) throws SQ"E6ception Student student G new Student')N student.set48'rs.get4nt'LidL))N student.setDame'rs.getString'LnameL))N student.set3ge'rs.get4nt'LageL))N return studentN
MM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 139/164
• Data – E4e!utando senten!ias
• Sentencia que de$uel$e uncon&unto de registros asociado a
una lista de #eans.String SQ" G Lselect _ from StudentLN"istPStudent students G &d#cCemplate(#&ect.query'SQ" new Student>apper'))Npu#lic class Student>apper implements -ow>apperPStudent pu#lic Student map-ow'-esultSet rs int rowDum) throws SQ"E6ception Student student G new Student')N student.set48'rs.get4nt'LidL))N student.setDame'rs.getString'LnameL))N student.set3ge'rs.get4nt'LageL))N return studentN
MM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 140/164
• Data – E4e!utando senten!ias
• 4nsertar registro
• 3ctuali0ar registro
• Eliminar registro
String SQ" G Linsert into Student 'name age) $alues '? ?)LN &d#cCemplate(#&ect.update' SQ" new (#&ectHILaraL 11M )N
String SQ" G Lupdate Student set name G ? where id G ?LN &d#cCemplate(#&ect.update' SQ" new (#&ectHILaraL 1,M )N
String SQ" G Ldelete Student where id G ?LN &d#cCemplate(#&ect.update' SQ" new (#&ectHI+,M )N
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 141/164
• Data – E4e!utando senten!ias
• E&ecutar 88"
String SQ" G L;-E3CE C3!"E Student' L ` L48 4DC D(C DO"" 3OC(4D;-E>EDC L ` LD3>E @3-;3-'+,) D(C DO"" L ` L3RE 4DC D(C DO"" L ` L-4>3- E '48))NL &d#cCemplate(#&ect.e6ecute' SQ" )N
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 142/164
• 8istas – /0u1 es "8C2
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 143/164
• 8istas – "8C /0u1 es esto2
• Es un patr%n de dise*oorientado a aplicaciones con
interfa0 de usuario.• Su nom#re nace de las
iniciales de las pala#rasK>odelo @ista ;ontroladorV.
• Este patr%n esta orientadopara aplicaciones we#.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 144/164
• 8istas – "8C /0u1 es esto2
• Este patr%n #usca separar lasresponsa#ilidades de cada
capaB l%gica de negocio l%gicade presentaci%n de los datos yla integraci%n de estas capas.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 145/164
• 8istas – "8C) Con!eptos Jsi!os
• "odelo) Es la capa que atiende atoda la l%gica del negocio y losdatos del mismo.
• 8ista) Es la capa que controla ygestiona todo lo relati$o a lapresentaci%n de los datos alusuario.
• Controlador) Es la capa que seencarga de gestionar la interacci%nentre la $ista y el modelo.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 146/164
• Spring "8C – Es el m%dulo de Spring que da
soporte a un frameworkcompleto >@;.
– Su componente principal es el8ispathSer$let que se encargade gestionar todas las
peticiones y respuestas CC.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 147/164
• Spring "8C – El Ue#3pplication;onte6t es la
implementaci%n del3pplication;onte6t que se usa
para Spring >@;.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 148/164
• Spring "8C – 6ro!essing 3<<6 ;e5uest
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 149/164
• Spring "8C – 6ro!essing 3<<6 ;e5uest
• 8espués reci#ir la petici%n el8ispatcherSer$let consulta
andler>apping para $er quecontroler puede atender lapetici%n.
• El controler #usca que método
puede atender a la petici%nCC. -etorna el nom#re de la$ista.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 150/164
• Spring "8C – 6ro!essing 3<<6 ;e5uest
• El 8ispatcherSer$let usa al@iew-esol$er para encontrar la
$ista asociado a el nom#repre$iamente o#tenido.
• Finalmente el 8ispatchSer$letpasa los datos o#tenidos del
modelo para que se rendericen &unto a la $ista.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 151/164
• Spring "8C – Congura!i-n oligatoria
• "a con/guraci%n de unaaplicaci%n we# esta en el
we#.6mlPwe#5app idGLUe#3pp48L $ersionGL+.:L 6mlnsGLhttpBTT&a$a.sun.comT6mlTnsT&+eeL 6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL 6siBschema"ocationGLhttpBTT&a$a.sun.comT6mlTnsT&+eehttpBTT&a$a.sun.comT6mlTnsT&+eeTwe#5app+:.6sdL
Pdisplay5nameSpring >@; 3pplicationPTdisplay5name OservletP Oservlet#nameP3ello>eO*servlet#nameP Oservlet#!lassP
org'springframework'we'servlet'Dispat!(erServlet O*servlet#!lassP Oload#on#startupP$O*load#on#startupP O*servletP Pser$let5mapping Pser$let5nameelloUe#PTser$let5name Purl5pattern_.&spPTurl5pattern PTser$let5mappingPTwe#5app
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 152/164
• Spring "8C – Congura!i-n oligatoria
• Se declara el 8ispatcherSer$letpara que se e&ecute al le$antar
el ser$idor.• Este componente $a a le$antar
el Ue#3pplication;onte6t conel /chero de con/guraci%n que
le indiquemos.• El /chero de con/guraci%n de#e
estar u#icado en UE!54DFT
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 153/164
• Spring "8C – Congura!i-n oligatoria
• odemos cam#iar la u#icaci%ndel /chero de con/guraci%n si
agregamos el;onte6t"oader"istener.Pwe#5app idGLUe#3pp48L $ersionGL+.:L 6mlnsGLhttpBTT&a$a.sun.comT6mlTnsT&+eeL 6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL 6siBschema"ocationGLhttpBTT&a$a.sun.comT6mlTnsT&+eehttpBTT&a$a.sun.comT6mlTnsT&+eeTwe#5app+:.6sdLO!ontet#paramP Oparam#nameP!ontetCongLo!ationO*param#nameP
Oparam#valueP*>E#F*appli!ation#!ong'mlO*param#valuePO*!ontet#paramPOlistenerP Olistener#!lassP org'springframework'we'!ontet'ContetLoaderListener O*listener#!lassPO*listenerPPTwe#5app
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 154/164
• Spring "8C – Congura!i-n Spring
• El /chero de con/guraci%nSpring nos sir$e para enla0ar
todos los componentes y lasp9ginas.P#eans 6mlnsGLhttpBTTwww.springframework.orgTschemaT#eansL mlns)!ontet(ttp)**www'springframework'org*s!(ema*!ontet 6mlnsB6siGLhttpBTTwww.w7.orgT+,,1T>"Schema5instanceL 6siBschema"ocationGL httpBTTwww.springframework.orgTschemaT#eans
httpBTTwww.springframework.orgTschemaT#eansTspring5#eans57.,.6sd httpBTTwww.springframework.orgTschemaTconte6t httpBTTwww.springframework.orgTschemaTconte6tTspring5conte6t57.,.6sdL
O!ontet)!omponent#s!an ase#pa!kageG!om'eample'Q *P Oean!lassorg'springframework'we'servlet'view'nternal;esour!e8iew;esolverP Oproperty namepre value*>E#F*4sp* *P Oproperty namesuR value'4sp *P O*eanP
PT#eans
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 155/164
• Spring "8C – Congura!i-n Spring
• Se de/ne el escaner decomponentes que instanciar9
a todos las clases con/guradascon anotaciones.
• Se con/gura el @iew-esol$erdonde indicamos el directorio
donde se encuentran lasp9ginas dinamicas y quee6tensi%n tienen.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 156/164
• Spring "8C – mplementando el
!ontrolador• "as anotaciones m9s
importantes en el controladorsonB Y;ontroller yY-equest>apping.&Controller&;e5uest"apping@*(ellopu#lic class ello;ontroller
&;e5uest"apping@met(od ;e5uest"et(od'7E<
pu#lic String printello'>odel>ap model) model.add3ttri#ute'LmessageL Lello Spring >@; FrameworkXL)N return LhelloLN MM
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 157/164
• Spring "8C – mplementando el
!ontrolador• Y;ontroller de/ne el
componente como elcontrolador dentro del >@;.
• Y-equest>apping puedeenla0ar al controlador con unrecurso y cada método con unmétodo CC.
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 158/164
• Spring "8C – mplementando el
!ontrolador• ero Y-equest>apping tam#ién
pueden hacer que cada métodose asocie indi$idualmente acada recurso y método CC.
• "a enumeraci%n -equest>ethod
proporciona con/guraci%n paratodos los métodos CC 'REC(SC OC 8E"ECE )
Spring Framework
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 159/164
• Spring "8C – mplementando el
!ontrolador• "a clase >odel>ap es el medio
que disponemos con Spring>@; de en$iar los datos a la$ista.
• Dosotros de#emos retornar el
nom#re de la $ista quedeseamos presentar.
Spring Framework
i
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 160/164
• Spring "8C – mplementando el
!ontrolador• ;on la anotaci%n
Y-equestaram podemosasociar un par9metro de laO-" con un par9metro delmétodo.
&Controller&;e5uest"apping@*invoi!epu#lic class 4n$oice;ontroller
&;e5uest"apping@met(od ;e5uest"et(od'7E<
pu#lic String printello'&;e5uest6aram@Gid int id >odel>apmodel) model.add3ttri#ute'Kin$oiceL o#&)N return Kdetail5in$oiceLN MM
Spring Framework
S i "8C
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 161/164
• Spring "8C – Creando la vista
• "as $istas pueden por defectoson JS pero Spring >@;
puede integrarse con JSFStruts y otros frameworks quedan soporte de $istas.Phtml Phead Ptitleello Spring >@;PTtitle PThead P#ody Ph+THmessageUPTh+ PT#odyPThtml
Spring Framework
S i "8C
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 162/164
• Spring "8C – Creando la vista
• Codos los atri#utos queagregamos en la instancia de
>odel>ap podemos acceder aella con el lengua&e dee6presiones soportado.Phtml Phead Ptitleello Spring >@;PTtitle PThead P#ody Ph+THmessageUPTh+ PT#odyPThtml
Spring Framework
S i "8C
7/17/2019 CursoSpring PRESENTACION
http://slidepdf.com/reader/full/cursospring-presentacion 163/164
• Spring "8C – ;ES<