在springboot中添加自定义TemplateResolver
我们都知道springboot的模板文件默认是在 classpath:templates/ 下面并且以.html结尾,但当在生产环境中我们需要动态的修改或替换某些模板文件时这样就不满足了,
这时就需要自定义一个TemplateResolver来解析我们的模板文件了,具体实现如下:
方法一(推荐):
这种方式继承了之前默认的配置,如下这种设置只需把模板文件与可执行jar文件放于同一目录下的templates/下即可。
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.thymeleaf.templateresolver.FileTemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolver;
@Configuration
public class WebConfig {
@Bean
public TemplateResolver fileTemplateResolver(ThymeleafProperties properties) {
FileTemplateResolver resolver = new FileTemplateResolver();
resolver.setOrder(Ordered.HIGHEST_PRECEDENCE);
resolver.setCacheable(properties.isCache());
resolver.setSuffix(properties.getSuffix());
if (properties.getEncoding() != null) {
resolver.setCharacterEncoding(properties.getEncoding().name());
}
resolver.setTemplateMode(properties.getMode());
resolver.setPrefix("./templates/");
return resolver;
}
}
方法二:
如下这种设置只需要把模板文件与可执行jar文件位于同一目录即可。
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.templateresolver.TemplateResolver; @Configuration public class WebConfig { @Bean public TemplateResolver fileTemplateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setPrefix("file:"); resolver.setSuffix(".html"); resolver.setTemplateMode("HTML5"); // resolver.setOrder(Ordered.HIGHEST_PRECEDENCE); return resolver; } }
测试:
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping public class TestController { @GetMapping("/download") public String getIndex() { return "test"; } }
测试中使用相对目录./templates/
或 test.html
注意设置模本文件的内容不同。classpath
:/templates/test.html,
在浏览器访问 http://localhost:8080/download
观察输出加载内容及顺序。
经测试:模版加载顺序是自定义优先
获取模板解析器
1 2 3 4 5 6 7 8 9 | // 注入自定义的模板解析器 @Autowired @Qualifier ( "fileTemplateResolver" ) TemplateResolver fileTemplateResolver; // 注入默认的模板解析器 @Autowired @Qualifier ( "defaultTemplateResolver" ) TemplateResolver defaultTemplateResolver; |
分类:
springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具