在springboot中添加自定义TemplateResolver

本文介绍如何在SpringBoot中自定义模板解析器以支持动态修改或替换模板文件,并提供了两种实现方式及其测试方法。

我们都知道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.htmlclasspath:/templates/test.html, 注意设置模本文件的内容不同。

在浏览器访问 http://localhost:8080/download 观察输出加载内容及顺序。

 

 

经测试:模版加载顺序是自定义优先

    

 

 

获取模板解析器

    // 注入自定义的模板解析器
    @Autowired
    @Qualifier("fileTemplateResolver")
    TemplateResolver fileTemplateResolver;

    // 注入默认的模板解析器
    @Autowired
    @Qualifier("defaultTemplateResolver")
    TemplateResolver defaultTemplateResolver;

 

转载于:https://www.cnblogs.com/UUUP/p/8628689.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值