Spring Boot和Thymeleaf-再次热插拔模板和资源

Spring Boot和Thymeleaf-再次热插拔模板和资源,第1张

Spring Boot和Thymeleaf-再次热插拔模板和资源

我花了一些时间,最后在这里我将解释如何使它工作。到处搜寻您可能会发现一些资讯:

  • Spring Boot热插拔
  • SO-Spring Boot + Jetty和热部署

我的初始方法是禁用缓存并添加Spring开发工具:

spring靴

application.properties

spring.thymeleaf.cache=falsespring.thymeleaf.mode=LEGACYHTML5spring.thymeleaf.prefix=/templates/

pom.xml

    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-devtools</artifactId>        <optional>true</optional>    </dependency>

但是,仅使用上面的代码片段是不够的,因为仅在创建项目时才执行热交换(Intellij Idea中的CTRL + F9)。这是因为
默认模板解析器基于类路径 ,这就是需要重新编译的原因。


一个有效的解决方案

defaultTemplateResolver
使用基于文件系统的解析器来覆盖:

application.properties

spring.thymeleaf.cache=falsespring.thymeleaf.mode=LEGACYHTML5spring.thymeleaf.templates_root=src/main/resources/templates/

应用类别

@SpringBootApplicationpublic class MyApplication {    @Autowired    private ThymeleafProperties properties;    @Value("${spring.thymeleaf.templates_root:}")    private String templatesRoot;    public static void main(String[] args) {        SpringApplication.run(MyApplication.class, args);    }    @Bean    public ITemplateResolver defaultTemplateResolver() {        FileTemplateResolver resolver = new FileTemplateResolver();        resolver.setSuffix(properties.getSuffix());        resolver.setPrefix(templatesRoot);        resolver.setTemplateMode(properties.getMode());        resolver.setCacheable(properties.isCache());        return resolver;    }}

我发现此解决方案是最佳的,因为它可以让您外部化配置并使用不同的配置文件(dev,prod等),同时可以通过 按F5键 来重新加载更改 :)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5621741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存