Architecturehexagonalepourlesnuls(etlesdéveloppeursSpring)Speakers:YouenChéné(CTOSaagie)Format:ConférenceDate:19avril2018YouenestunanciendéveloppeurSpring,désormaisProductManagerchezSaagie.Rencontrantdesdifficultéàfaireévolueruneapplication,YouensedemandesileDomainDrivenDevelopment(DDD)nepourraitpasl’aider.IlaassistéàbeaucoupdeconférencessurlesDDD.Maislessnippetsdecodeétaienttoujourssansframework.Bref,descasd’écoleàmillelieuxdesapplicationsJavabourréesdeframework.CetalkapourobjectifdecréerunpontentrelemondeDDDetlesapplisencouchebaséessurSpring.Youenprésenteuneapplicationdanslaquelleunerèglemétierestrépartiedans3serviceset2DAO.Cetéparpillementestàl’architectureencouche.Nécessiteunrefactoringpourlacentraliserdansuneseuleméthode.Dupointdevued’unCTO,touscesmouvementsseressemblentCleanArchitectureóOnionArchitectureóHexagonalArchitectureModélisationduDomaineLes3gèlesàrespecterlorsqu’onmodéliseleDomaine:
1. Règle1:dansunframework,pasdedépendanceversunframeworkouunlibrairie(àl’exceptiondeGuava)
2. Règle2:ledomainen’appellejamaisdirectementl’extérieur3. Règle3:pasdecoded’infrastructuredansledomaine
Pouraccéderauxrèglesmétiersdudomaine,ilfautcréerdesflux.Pourcela,onvacréerdesportsprimairesetsecondaires:
• Portprimaire:portsd’entréedudomaineutilisésparlacoucheapplicative• Portsecondaire:interfacepermettantaudomained’appelerl’extérieur(reposesur
del’injectiondedépendance)Danslalittérature,ontrouveégalementdesDrivingPort,InputPortetOutputPort.LesAdaptersvontsebranchersurlesports.ToutelagluetechniqueestplacéedanslesAdapters.Exemple:lagestiondesexceptionstechniques.LeDDDnécessitedesmappersentrelesobjetsdudomaineetlesDTO.
ImplémentationMiseenœuvredansuneapplicationSpringBoot:
HackpourencapsulerleDomainedansle@ServicedeSpringBoot:injecterleportsecondairedansleDomaine.MettreenplaceleDDDnécessitedeformerlesdéveloppeursavecdesDOJOparexemple.Conclusion