Through this article, you are about to learn how to use Thymeleaf to create templates using Html with Spring boot. And also we will integrate this with Smtp to configure a simple but powerful email system. Before move to the topic, let's have some simple ideas about Thymeleaf. As to the Thymeleaf official website it introduce Thymeleaf as follows.
Thymeleaf is a modern server-side Java template engine for both web and standalone environments. Thymeleaf’s main goal is to bring elegant natural templates to your development workflow — HTML that can be correctly displayed in browsers and also work as static prototypes, allowing for stronger collaboration in development teams. With modules for Spring Framework, a host of integrations with your favorite tools, and the ability to plug in your own functionality, Thymeleaf is ideal for modern-day HTML5 JVM web development — although there is much more it can do.
So Let’s Start..
Before starting the tutorial you should have to make sure your machine is set up with Java. For this tutorial, I'm using Java 11.
Create new project
First of all, you should have to initialize a spring boot project from spring Initializer. I’m not going to add dependencies at the initialization. So we can insert them later. Below will be a screenshot of the initialization page for your reference.
Step 1 :
Open up the downloaded project with your favorite IDE. For this tutorial, I’m using IntelliJ Idea.
Let’s start the implementation by adding the required dependencies. I have created a maven based project. So, I’m adding the required dependencies to the root level pom.xml file. You can easily find the required dependencies from the maven repository. For this tutorial, we required the following dependencies.
spring-boot-starter-mail — Starter for using Java Mail and Spring Framework’s email sending support
thymeleaf-spring5 —Modern server-side Java template engine for both web and standalone environments
thymeleaf-layout-dialect -A dialect for Thymeleaf that allows you to use layout/decorator templates to style your content.
org.projectlombok-Spice up your java: Automatic Resource Management, automatic generation of getters, setters, equals, hashCode and toString, and more!
Below will be the complete pom.xml content of the final project.
Step 2 :
Now I’m going to add the required properties to the
application.properties file. You are free to use
application.yml as well. But for this tutorial, 'm using application.properties. For this tutorial, we required the following properties.
Step 3 :
Let’s add spring thmeleaf configurations. Create new package as
configs. And create new class as
ThymeleafTemplateConfig.java inside the created package. And add below code line to the newly created class.
In order to process our templates, we will configure a
SpringTemplateEngine which specially configured for email processing, in our Spring boot email template configuration. We need to tell Thymeleaf where the email templates are located. We do this by creating and configuring the
ClassLoaderTemplateResolver We can set a prefix and suffix to configure where thymeleaf will search for the HTML email templates.
Step 4 :
Using Thymeleaf for processing our email templates would allow us to use some interesting features:
- Expressions in Spring EL.
- Flow control: iterations, conditionals, etc.
- Utility functions: date/number formatting, dealing with lists, arrays…
- Easy i18n, integrated with our application’s Spring internationalization infrastructure.
- Natural templating: our email templates can be static prototypes, written by UI designers.
Also, given the fact that Thymeleaf has no required dependencies on the servlet API, there would be no need at all to create or send email from a web application. In this example, we are going to create a very simple HTML template.
Step 6 :
Let’s test the application. For this tutorial I'm using
SprinBootTest class inorder to test the implementation.
By running the test class, Hopefully you will receive a email which created using thmeleaf.