package Ġat . rech ner her z . example . config Ċ Ċ import Ġat . rech ner her z . example . config . web . Image Path Resource Resolver Ċ import Ġat . rech ner her z . example . domain . base . Base Properties Ċ import Ġat . rech ner her z . example . domain . document . Document Properties Ċ import Ġat . rech ner her z . example . util . append Path Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . http . Cache Control Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . validation . bean validation . Method Validation Post Processor Ċ import Ġorg . springframework . web . accept . Fixed Content Neg otiation Strategy Ċ import Ġorg . springframework . web . filter . Forwarded Header Filter Ċ import Ġorg . springframework . web . servlet . Locale Resolver Ċ import Ġorg . springframework . web . servlet . config . annotation . Content Neg otiation Configurer Ċ import Ġorg . springframework . web . servlet . config . annotation . Resource Handler Registry Ċ import Ġorg . springframework . web . servlet . config . annotation . Web Mvc Configurer Ċ import Ġorg . springframework . web . servlet . i 1 8 n . Cookie Locale Resolver Ċ import Ġorg . springframework . web . servlet . resource . Path Resource Resolver Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠSpring ĠWeb Ġconfiguration . Ċ Ġ*/ Ċ @ Configuration Ċ class ĠWeb Config ( ĊĠĠĠ Ġprivate Ġval Ġbase Properties : ĠBase Properties , ĊĠĠĠ Ġprivate Ġval Ġdocument Properties : ĠDocument Properties Ċ ) Ġ: ĠWeb Mvc Configurer Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDon 't Ġdo Ġcontent Ġneg otiation Ġbased Ġon Ġthe Ġ" Accept "- header Ġor Ġthe Ġpath . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUse Ġ` application / json ` Ġas Ġdefault , Ġbut Ġallow Ġto Ġproduce Ġany Ġcontent Ġtype ĊĠĠĠĠ Ġ* Ġ( to Ġavoid Ġ" could Ġnot Ġfind Ġacceptable Ġrepresentation " Ġerrors ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġconfigure Content Neg otiation ( config urer : ĠContent Neg otiation Configurer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigur er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. str ategies ( listOf ( Fixed Content Neg otiation Strategy ( listOf ( MediaType . APPLICATION _ JSON , ĠMediaType . ALL )))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġresource Ġhandlers Ġto Ġserve ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ- Ġdocuments Ġfrom Ġthe Ġpublic Ġdocuments Ġsubdirectory Ġas Ġstatic Ġresources Ġunder Ġthe Ġ[ DOCUMENT S _ URL ] ĊĠĠĠĠ Ġ* Ġ- Ġstatic Ġresources Ġunder Ġthe Ġ[ STATIC _ URL ] Ġ( sitemap . xml , Ġrobot s . txt ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote : ĠDirectory Ġresource Ġlocations Ġmust Ġend Ġwith Ġ'/ '. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Resource Handlers ( registry : ĠResource Handler Registry ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregistry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Handler ( any Sub Path ( DOCUMENT S _ URL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Locations ( base Properties . directory . append Path ( DOCUMENT S _ DIRECTORY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cache Control ( Cache Control . max Age ( 3 6 5 , ĠTimeUnit . DAYS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resource Chain ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resolver ( Image Path Resource Resolver ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Properties . extra Image Sizes . keys . map Ġ{ Ġ".$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġregistry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Handler ( any Sub Path ( STATIC _ URL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resource Locations ( base Properties . directory . append Path ( STATIC _ DIRECTORY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. resource Chain ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Resolver ( Path Resource Resolver ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ Cookie Locale Resolver ] Ġreads Ġthe Ġuser Ġlocale Ġand Ġtimezone Ġfrom Ġa Ġcookie . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠF allback Ġto Ġdefault Ġlocale / timezone Ġwhen Ġthe Ġcookie Ġcontains Ġin Ġinvalid Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ Locale ]( https :// docs . spring . io / spring / docs / current / spring - framework - reference / web . html # mvc - local eres olver ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġlocale Resolver (): ĠLocale Resolver Ġ= ĊĠĠĠĠĠĠĠ ĠCookie Locale Resolver (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Name Ġ= Ġbase Properties . locale Cookie Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Max Age Ġ= Ġbase Properties . locale Cookie Max Age ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault Locale ( base Properties . default User Locale ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetDefault TimeZone ( base Properties . default User TimeZone ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Reject Invalid Cookies Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Language Tag Comp liant Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġ[ Forwarded Header Filter ] Ġto Ġextract Ġ" Forwarded " Ġand Ġ" X - Forwarded - *" Ġheaders , ĊĠĠĠĠ Ġ* Ġnecessary Ġfor Ġrunning ĠTom cat Ġbehind Ġa Ġproxy . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġforwarded Header Filter (): ĠFor warded Header Filter Ġ= ĊĠĠĠĠĠĠĠ ĠFor warded Header Filter () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġ[ Method Validation Post Processor ] Ġto Ġdo Ġmethod - level Ġvalidation ĊĠĠĠĠ Ġ* Ġof Ġparameters Ġand Ġreturn Ġvalues . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġtarget Ġclass Ġmust Ġbe Ġannotated Ġwith Ġ[ org . springframework . validation . annotation . Validated ] ĊĠĠĠĠ Ġ* Ġto Ġbe Ġconsidered Ġfor Ġvalidation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġmethod Validation Post Processor (): ĠMethod Validation Post Processor Ġ= ĊĠĠĠĠĠĠĠ ĠMethod Validation Post Processor () Ċ } Ċ