我花了一些时间,最后在这里我将解释如何使它工作。到处搜寻您可能会发现一些资讯:
- 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键 来重新加载更改 :)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)