FD 2016 INSEA Chapitre 6 - benelallam.org · La réponse Spring ! qEn rupture avec les conteneurs...
-
Upload
vuongthuan -
Category
Documents
-
view
214 -
download
0
Transcript of FD 2016 INSEA Chapitre 6 - benelallam.org · La réponse Spring ! qEn rupture avec les conteneurs...
Rappeldel’architecture logicielledesAppsJEE • Lacouche [dao]s'occupede l'accès auxdonnées, le
plussouventdesdonnéespersistantesauseind'unSGBD.
• Lacouche [métier]implémente lestraitements«métier»de l'application. Cettecoucheestindépendante detoute formed'interfaceavecl'utilisateur.• C'estgénéralement lacouche laplusstablede
l'architecture.• Lacouche [Web]quireprésente lapartiecontrôle
quiorchestre lesaccèsàl’application ainsique lesinterfaces (graphiquessouvent)quipermetàl'utilisateur depiloter l'application etd'enrecevoirdesrésultats.
Problématiques de développement JEE
q JEEn’encouragepasunebonneséparationdespréoccupations(isolationdesdifférentesproblématiquesqu’uneapplicationdoitgérer).
q JEEestuneplate-formecomplexeàmaîtriser,quiposedesproblèmesdeproductivité.
q JEEimposeuneplate-formed’exécutionlourde,quiposedesproblèmesd’interopérabilitéentredifférentesimplémentations.
La réponse Spring !
qEnruptureaveclesconteneursJEE,disqualifiéspardenombreuxexpertspourleurlourdeur,sontapparusdesconteneursditslégers.
q Leframework Spring entredanscettecatégoriedesolutions.q CecœuraétéétendudemanièreàsupporterlaPOA(programmationorientéeaspect),ouAOP(AspectOrientedProgramming),unnouveauparadigmedeprogrammationpermettantd’allerau-delàdel’approcheobjetentermedemodularisationdescomposants.
Présentation de Spring
qSPRINGesteffectivementunconteneurdit«léger»,c’est-à-direuneinfrastructuresimilaireàunserveurd’applicationJEE.
q Ilprendenchargelacréationd’objetsetlamiseenrelationd’objetsparl’intermédiaired’unfichierdeconfigurationquidécritlesobjetsàfabriqueretlesrelationsdedépendancesentrecesobjets.
q Legrosavantageparrapportauxserveursd’applicationestqu’avecSPRING,vosclassesn’ontpasbesoind’implémenterunequelconqueinterfacepourêtreprisesenchargeparleframework (aucontrairedesserveursd’applicationsJEEetdesEJBs).
q C’estencesensqueSPRINGestqualifiédeconteneur«léger».
Présentation de Spring
qOutrecetteespècedesuperfabriqued’objets,SPRINGproposetoutunensembled’abstractionspermettantdegérerentreautres:
• Lemodetransactionnel.• L’appeld’EJBs.• Lacréationd’EJBs.• Lapersistanced’objets• Lacréationd’uneinterfaceWeb.• L’appeletlacréationdeWebServices.
q Pourréalisertoutceci,SPRINGs’appuiesurlesprincipesdudesignpatternIoC etsurlaprogrammationparaspects(AOP).
Les modules de SpringCommenouspouvonslevoir,Spring reposesurunsocle technique constituédesmodules :
•Spring Core,leconteneur léger ;•Spring AOP,leframework dePOA.
Les patrons de conception
q Enanglais,onparledeDesignPattern.q Spring reposesurdesconceptséprouvés,patronsdeconceptionetparadigmes,dontlesplusconnussont• IoC (InversionofControl),• lepatron« fabrique »• lesingleton,• laprogrammationorientéeAspect,• ouencorelemodèledeprogrammationdit"partemplate".
q Cesconceptsn’étantpaspropreàSpring,ilss’appliquentégalementàd’autresframeworks.
Couplagefort
• QuanduneclasseAestliéàuneclasseB,onditquelaclasseAestfortementcoupléeàlaclasseB.• LaclasseAnepeutfonctionnerqu’enprésencedelaclasseB.• SiunenouvelleversiondelaclasseB(soitB2),estcrée,onestobligédemodifierdanslaclasseA.• Modifieruneclasseimplique:
• Ilfautdisposerducodesource.• Ilfautrecompiler,déployeretdistribuerlanouvelleapplicationauxclients.Cequiengendredesproblèmesdelamaintenancedel’application
Couplagefort:exemple
Decefaitnousavonsviolé leprincipe «uneapplication doitêtre ferméeàlamodification etouverteàl’exetension»
Couplagefaible
• Pourutiliserlecouplagefaible,nousdevonsutiliserlesinterfaces.• ConsidéronsuneclasseAquiimplémenteuneinterfaceIA,etuneclasseBquiimplémenteuneinterfaceIB.• SilaclasseAestliéeàl’interfaceIBparuneassociation,onditqueleclasseAetlaclasseBsontliéesparuncouplagefaible.• CelasignifiequelaclasseBpeutfonctionneravecn’importequelleclassequiimplémentel’interfaceIA.• EneffetlaclasseBneconnaitquel’interfaceIA.Decefaitn’importequelleclasseimplémentantcetteinterfacepeutêtreassociéeàlaclasseB,sansqu’ilsoitnécessairedemodifierquoiquesesoitdanslaclasseB.• Aveclecouplagefaible,nouspourronscréerdesapplicationferméeàlamodificationetouvertesàl’extension.
InjectiondesdépendancesavecSpring
• L’injectiondesdépendance,oul’inversiondecontrôleestunconceptquiintervientgénéralementaudébutdel’exécutiondel’application.• Spring IOCcommenceparlireunfichierXMLquidéclarequellessontdifférentesclassesàinstancieretd’assurerlesdépendancesentrelesdifférentesinstances.• Quandonabesoind’intégrerunenouvelleimplémentationàuneapplication,ilsuffiraitdeladéclarerdanslefichierxml debeansspring.
Injectiondesdépendancesdansuneapplication javastandardpackagepres;importmetier.IMetier;
importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.FileSystemXmlApplicationContext;publicclassPresentation {
publicstatic void main(String[]args){ApplicationContext appContext =new
FileSystemXmlApplicationContext("AppContext.xml");IMetier m=(IMetier)appContext.getBean("metier");System.out.println(m.calcul());
}}