在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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM