Thymeleaf 是一个基于 Java 的服务端模板引擎,它不仅适用于 Web 环境,也能在独立环境中运行。它能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。与 JSP 相比,它功能更为强大,主要负责 UI 上的动态内容渲染。该引擎允许后端和前端开发人员在同一个视图上并行工作。它可以直接访问 Java 对象和 Spring Bean,并将它们与 UI 进行绑定。当我们创建任何 Web 应用程序时,它通常与 Spring MVC 结合使用。那么,让我们从一个示例开始,了解一下 Thymeleaf 是如何与 Spring 框架协作的。
项目搭建
在这里,我们将在“员工(Employee)”数据集上执行 CRUD(增删改查)操作。为了构建这个项目,我们需要添加某些依赖项,这些依赖项以列表形式列出,同时也包含在 pom.xml 中。
- Spring Web(使用 Spring MVC 构建 Web 应用,包括 RESTful 应用。默认使用 Apache Tomcat 作为嵌入式容器。)
- Spring Data JPA(使用 Spring Data 和 Hibernate 通过 Java 持久化 API 在 SQL 存储中持久化数据。)
- Spring Boot Devtools(提供快速应用重启、LiveReload 以及用于增强开发体验的配置)
- MySQL Driver(MySQL JDBC 和 R2DBC 驱动程序)
- Thymeleaf(适用于 Web 和独立环境的服务端 Java 模板引擎。允许 HTML 在浏览器中作为静态原型正确显示。)
POM.XML
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.2
com.example
thymeleaf
0.0.1-SNAPSHOT
thymeleaf
Demo project for Spring Boot
17
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
application.properties 文件
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/emp
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
Employee Pojo (实体类)
这是一个简单的 Pojo 类,用于存储 Employee 的数据。
package com.microservice.modal;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String name;
private String email;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Employee Service 接口和 EmployeeServiceImpl 类
“`java
package com.microservice.service;
import java.util.List;
import c