Quick Start-FreeMarker with Spring Boot

In this blog, we will go through how to develop a Spring Boot web application using the FreeMarker template engine and package as an executable JAR file.
Following technologies stack being used:
  • Spring Boot 2.1.1.RELEASE
  • Spring 5.1.3.RELEASE 
  • Maven 3
  • JDK 1.8
  • Eclipse Oxygen
  • Free Maker
1)Project Structure

2)Maven/Dependency Management [pom.xml] 
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.1.RELEASE</version>
  <!-- lookup parent from repository -->
 </parent>
 <groupId>com.knowledgefactory</groupId>
 <artifactId>springboot-freemaker</artifactId>
 <packaging>jar</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>springboot-freemaker</name>
 <description>Demo project for Spring Boot-Free Maker</description>
 <properties>
  <java.version>1.8</java.version>
 </properties>
 <dependencies>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <!-- spring mvc, rest -->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>
 </dependencies>
 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   </plugin>
  </plugins>
 </build>
</project>
3)Controller
package com.knowledgefactory.knowledgefactorydemo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
 @GetMapping({"/", "/welcome"})
    public String hello(Model model) {
        model.addAttribute("name", "knowledgefactory4upeoples@gmail.net");
        return "index";
    }
}
4)Spring Boot
package com.knowledgefactory.knowledgefactorydemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class KnowledgefactorydemoApplication {
  public static void main(String[] args) {
         SpringApplication.run(KnowledgefactorydemoApplication.class, args);
     }
}
5)View Template
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello ${name}!</title>
 </head>
<body>
    <h2 class="hello-title">Hello ${name}!</h2>
</body>
</html>

6)application.properties

spring.freemarker.template-loader-path: classpath:/templates
spring.freemarker.suffix: .ftl
7)Run

$ mvn spring-boot:run
8)Test

Comments

Post a Comment