Introduktion til brug af FreeMarker i Spring MVC
1. Oversigt
FreeMarker er en Java-baseret skabelonmotor fra Apache Software Foundation. Ligesom andre skabelonmotorer er FreeMarker designet til at understøtte HTML-websider i applikationer, der følger MVC-mønsteret. Denne vejledning illustrerer, hvordan man gør det konfigurere FreeMarker til brug i Spring MVC som et alternativ til JSP.
Artiklen diskuterer ikke det grundlæggende i foråret MVC-brug. For en grundig gennemgang af det henvises til denne artikel. Derudover er dette ikke beregnet til at være et detaljeret kig på FreeMarkers omfattende kapaciteter. For mere information om FreeMarker-brug og syntaks, besøg dets websted.
2. Maven-afhængigheder
Da dette er et Maven-baseret projekt, tilføjer vi først de krævede afhængigheder til pom.xml:
org.freemarker freemarker 2.3.23 org.springframework spring-context-support $ {spring.version}
3. Konfigurationer
Lad os nu dykke ned i konfigurationen af projektet. Dette er et annoteringsbaseret Spring-projekt, så vi demonstrerer ikke den XML-baserede konfiguration.
3.1. Forår webkonfiguration
Lad os oprette en klasse til konfiguration af webkomponenter. Til det er vi nødt til at kommentere klassen med @EnableWebMvc, @Konfiguration og @ComponentScan.
@EnableWebMvc @Configuration @ComponentScan ({"com.baeldung.freemarker"}) offentlig klasse SpringWebConfig udvider WebMvcConfigurerAdapter {// Al webkonfiguration går her. }
3.2. Konfigurer ViewResolver
Spring MVC Framework giver ViewResolverinterface, der kortlægger visningsnavne til faktiske visninger. Vi opretter en forekomst af FreeMarkerViewResolver, som hører til fjeder-webmvc afhængighed.
Objektet skal konfigureres med de krævede værdier, der vil blive brugt i løbetid. For eksempel konfigurerer vi visningsopløseren til at bruge FreeMarker til visninger, der slutter på .ftl:
@Bean offentlig FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = ny FreeMarkerViewResolver (); resolver.setCache (sand); resolver.setPrefix (""); resolver.setSuffix (". ftl"); returopløsning; }
Bemærk også, hvordan vi også kan kontrollere cachetilstanden her - dette bør kun deaktiveres til fejlfinding og udvikling.
3.3. FreeMarker-skabelonsti-konfiguration
Dernæst indstiller vi skabelonstien, som angiver, hvor skabelonerne er placeret i webkonteksten:
@Bean offentlig FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = ny FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / visninger / ftl /"); returner freeMarkerConfigurer; }
3.4. Spring Controller Configuration
Nu kan vi bruge en Spring Controller til at behandle en FreeMarker-skabelon til visning. Dette er simpelthen en konventionel fjedercontroller:
@RequestMapping (værdi = "/ biler", metode = RequestMethod.GET) offentlig strenginit (@ModelAttribute ("model") ModelMap-model) {model.addAttribute ("carList", carList); returner "indeks"; }
Det FreeMarkerViewResolver og stykonfigurationer, der er defineret tidligere, sørger for at oversætte visningsnavnet indeks til den korrekte FreeMarker-visning.
4. FreeMarker HTML-skabelon
4.1. Opret enkel HTML-skabelonvisning
Det er nu tid til at oprette en HTML-skabelon med FreeMarker. I vores eksempel tilføjede vi en liste over biler til modellen. FreeMarker kan få adgang til denne liste og vise den ved at gentage dens indhold.
Når der fremsættes en anmodning om / biler URI, Spring behandler skabelonen ved hjælp af den model, den leveres. I vores skabelon, #liste direktiv angiver, at FreeMarker skal løkke over carList objekt fra modellen ved hjælp af bil at henvise til det aktuelle element og gengive indholdet inden for den blok.
Følgende kode inkluderer også FreeMarker udtryk at henvise til attributterne for hvert element i carList; eller f.eks. for at få vist det aktuelle bilelement lave egenskab, bruger vi udtrykket $ {bil.mak}.
FreeMarker Spring MVC Hello World
Tilføj bilmærke:Model:
Lave Model $ {bil.mak} $ {bil.model}
Efter styling af output med CSS genererer den behandlede FreeMarker-skabelon en form og en liste over biler:

5. Spring Boot
Hvis vi bruger Spring Boot, kan vi simpelthen importere spring-boot-starter-freemarker afhængighed:
org.springframework.boot spring-boot-starter-freemarker 2.3.4.RELEASE
Derefter skal vi blot tilføje vores skabelonfiler under src / main / ressourcer / skabeloner. Spring Boot har ansvaret for andre standardkonfigurationer som f.eks FreeMarkerConfigurer og FreeMarkerViewResolver.
6. Konklusion
I denne artikel diskuterede vi, hvordan man integrerer FreeMarker i en Spring MVC-applikation. FreeMarkers kapaciteter går langt ud over, hvad vi demonstrerede, så besøg Apache FreeMarker-webstedet for mere detaljeret information om brugen.
Eksempelkoden i denne artikel er tilgængelig i et projekt på Github.