这里我们来讲解一下SpringBoot如何整合Freemarker:
创建springboot项目时需要勾选web和Freemarker
项目启动成功之后连按两次shift,查看FreeMarkerAutoConfiguration类,这个类是FreeMarket的自动化配置类
下面来介绍一下FreeMarkerAutoConfiguration这个类中到底做了什么
检查模板位置:
获取模板位置:
其中最重要的是:
@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})
这句代码的含义是:引入了Freemarker的相关依赖下列方法才会生效
而这个依赖我们在pom.xml文件中已经自动配置好了
@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})
上面的这个注解在Freemarker中十分重要。
再来看:
@Import({FreeMarkerServletWebConfiguration.class, FreeMarkerReactiveWebConfiguration.class, FreeMarkerNonWebConfiguration.class})
这句代码可以让FreeMarker可以在不同的环境下使用
@EnableConfigurationProperties({FreeMarkerProperties.class})
按住ctrl点进FreeMarkerProperties中:
类型安全的属性注入:
这句话表面我们可以在aplication.properties中我们可以配置spring.freemarker这样一个属性
默认模板加载路径:
模板后缀为.ftl:
接下来我们要通过一个具体的例子来说明Freemarker如何使用:
1.创建实体类user
package org.javaboy.freemarker.bean;
public class User {
private Long id;
private String username;
private String address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
'}';
}
}
2.控制类
package org.javaboy.freemarker.controller;
import org.javaboy.freemarker.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.ArrayList;
import java.util.List;
@Controller
public class UserController {
@GetMapping("/user")
public String user(Model model) {
List<User> users = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setId((long) i);
user.setUsername("javaboy>>>" + i);
user.setAddress("www.javaboy.org>>>" + i);
users.add(user);
}
model.addAttribute("users", users);
return "user";
}
}
3.在template包下创建Freemarker模板
点击Edit File Templates…
分别对模板名称,后缀,内容进行编辑
4.创建freemarker文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<td>编号</td>
<td>用户名</td>
<td>用户地址</td>
</tr>
<#list users as u>
<tr>
<td>${u.id}</td>
<td>${u.username}</td>
<td>${u.address}</td>
</tr>
</#list>
</table>
</body>
</html>
用表格的形式将控制类添加的内容显示出来
5.启动
访问:http://localhost:8080/user
我们还可以在properties文件中对freemarker做如下配置:
#模板编码格式,默认是UTF-8
spring.freemarker.charset=UTF-8
#定义模板的 content-type
spring.freemarker.content-type=text/html
#是否开启缓存
spring.freemarker.cache=false
#配置模板后缀
spring.freemarker.suffix=.ftl