zoukankan      html  css  js  c++  java
  • 在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.htmlclasspath:/templates/test.html, 注意设置模本文件的内容不同。

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

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

        

    获取模板解析器

        // 注入自定义的模板解析器
        @Autowired
        @Qualifier("fileTemplateResolver")
        TemplateResolver fileTemplateResolver;
    
        // 注入默认的模板解析器
        @Autowired
        @Qualifier("defaultTemplateResolver")
        TemplateResolver defaultTemplateResolver;
    
  • 相关阅读:
    Aurora 数据库支持多达五个跨区域只读副本
    Amazon RDS 的 Oracle 只读副本
    Amazon EC2 密钥对
    DynamoDB 读取请求单位和写入请求单位
    使用 EBS 优化的实例或 10 Gb 网络实例
    启动 LAMP 堆栈 Web 应用程序
    AWS 中的错误重试和指数退避 Error Retries and Exponential Backoff in AWS
    使用 Amazon S3 阻止公有访问
    路由表 Router Table
    使用MySQLAdmin工具查看QPS
  • 原文地址:https://www.cnblogs.com/UUUP/p/8628689.html
Copyright © 2011-2022 走看看