Spring MVC에서 FreeMarker 사용 소개

1. 개요

FreeMarker 는 Apache Software Foundation의 Java 기반 템플릿 엔진입니다. 다른 템플릿 엔진과 마찬가지로 FreeMarker는 MVC 패턴을 따르는 애플리케이션에서 HTML 웹 페이지를 지원하도록 설계되었습니다. 이 튜토리얼은 JSP의 대안으로 Spring MVC에서 사용하기 위해 FreeMarker구성 하는 방법을 보여줍니다 .

이 기사에서는 Spring MVC 사용의 기본 사항에 대해 설명하지 않습니다. 자세한 내용은이 기사를 참조하십시오. 또한 이것은 FreeMarker의 광범위한 기능을 자세히 살펴보기위한 것이 아닙니다. FreeMarker 사용 및 구문에 대한 자세한 내용은 웹 사이트를 방문하십시오.

2. Maven 종속성

이것은 Maven 기반 프로젝트이므로 먼저 필요한 종속성을 pom.xml에 추가합니다 .

 org.freemarker freemarker 2.3.23   org.springframework spring-context-support ${spring.version} 

3. 구성

이제 프로젝트의 구성을 살펴 보겠습니다. 이것은 주석 기반 Spring 프로젝트이므로 XML 기반 구성을 보여주지 않을 것입니다.

3.1. Spring 웹 구성

웹 구성 요소를 구성하는 클래스를 만들어 보겠습니다. 이를 위해 @EnableWebMvc , @Configuration@ComponentScan으로 클래스에 주석을 추가해야합니다 .

@EnableWebMvc @Configuration @ComponentScan({"com.baeldung.freemarker"}) public class SpringWebConfig extends WebMvcConfigurerAdapter { // All web configuration will go here. }

3.2. ViewResolver 구성

Spring MVC Framework는 뷰 이름을 실제 뷰에 매핑 하는 ViewResolver 인터페이스를 제공합니다 . spring-webmvc 종속성에 속하는 FreeMarkerViewResolver 인스턴스를 생성합니다 .

해당 개체는 런타임에 사용될 필수 값으로 구성되어야합니다. 예를 들어 .ftl로 끝나는 뷰에 FreeMarker를 사용하도록 뷰 리졸버를 구성합니다 .

@Bean public FreeMarkerViewResolver freemarkerViewResolver() { FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); resolver.setCache(true); resolver.setPrefix(""); resolver.setSuffix(".ftl"); return resolver; }

또한 여기에서 캐싱 모드를 제어 할 수도 있습니다. 디버깅 및 개발을 위해서만 비활성화해야합니다.

3.3. FreeMarker 템플릿 경로 구성

다음으로 웹 컨텍스트에서 템플릿이있는 위치를 나타내는 템플릿 경로를 설정합니다.

@Bean public FreeMarkerConfigurer freemarkerConfig() { FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/ftl/"); return freeMarkerConfigurer; }

3.4. 스프링 컨트롤러 구성

이제 Spring Controller를 사용하여 디스플레이 용 FreeMarker 템플릿처리 할 수 있습니다 . 이것은 단순히 일반적인 Spring Controller입니다.

@RequestMapping(value = "/cars", method = RequestMethod.GET) public String init(@ModelAttribute("model") ModelMap model) { model.addAttribute("carList", carList); return "index"; }

FreeMarkerViewResolver 이전에 정의 및 경로 구성은 뷰 이름의 번역 처리됩니다 인덱스 적절한 프리 마커보기로합니다.

4. FreeMarker HTML 템플릿

4.1. 간단한 HTML 템플릿보기 만들기

이제 FreeMarkerHTML 템플릿 을 만들 차례 입니다. 이 예에서는 모델에 자동차 목록을 추가했습니다. FreeMarker는 해당 목록에 액세스하고 내용을 반복하여 표시 할 수 있습니다.

/ cars URI에 대한 요청이 있으면 Spring은 제공된 모델을 사용하여 템플릿을 처리합니다. 템플릿에서 #list 지시문 은 FreeMarker가 현재 요소를 참조하고 해당 블록 내의 콘텐츠를 렌더링하기 위해 car 를 사용하여 모델 의 carList 객체를 반복해야 함을 나타냅니다 .

다음 코드에는 carList 에있는 각 요소의 속성을 참조하는 FreeMarker 표현식 도 포함되어 있습니다 . 또는 예를 들어 현재 자동차 요소의 make 속성 을 표시하려면 $ {car.make} 표현식을 사용합니다 .

FreeMarker Spring MVC Hello World

Add Car Make :

Model:

Make Model
${car.make} ${car.model}

CSS로 출력을 스타일링 한 후 처리 된 FreeMarker 템플릿은 양식과 자동차 목록을 생성합니다.

5. 스프링 부트

Spring Boot를 사용하는 경우 spring-boot-starter-freemarker 종속성을 간단히 가져올 수 있습니다 .

 org.springframework.boot spring-boot-starter-freemarker 2.3.4.RELEASE 

그런 다음 src / main / resources / templates 아래에 템플릿 파일을 추가하기 만하면 됩니다. Spring Boot는 FreeMarkerConfigurerFreeMarkerViewResolver 와 같은 다른 기본 구성을 담당 합니다.

6. 결론

이 기사에서는 Spring MVC 애플리케이션에서 FreeMarker 를 통합하는 방법에 대해 논의했습니다 . FreeMarker의 기능은 우리가 시연 한 것 이상이므로 사용에 대한 자세한 정보는 Apache FreeMarker 웹 사이트를 방문하십시오.

이 기사의 샘플 코드는 Github의 프로젝트에서 사용할 수 있습니다.