在Spring Boot中,可以实现Java类和模板引擎的热部署(自动重载)
在Spring Boot中,是否可以进行热部署的操作?我在思考这个问题并进行研究时,发现可以使用一个名为Springloaded的工具来实现热部署,所以我尝试了一下。
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-reload-static-content
※这是第78.4节:”在不重新启动容器的情况下重新加载Java类”。
由于可以应用于Java类和模板引擎,我将它们一起整理在这里。
pom.xml文件的配置
我們將添加對SpringLoaded的依賴,如下所示。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
</dependencies>
</plugin
请从以下版本中选择任意一个Springloaded(建议选择最新版本)。
http://mvnrepository.com/artifact/org.springframework/springloaded
Spring Boot的虚拟机参数配置
根据公式指南,只需要对上述的pom.xml进行设置就可以了,但实际上没有这样做是不行的。
在STS中,右击项目 -> 【作为运行】 -> 【运行配置】 -> 【Java应用程序】 -> 【项目名称】-> 参数选项卡 -> 虚拟机参数, 输入以下内容。
-javaagent:M2REPO/repository/org/springframework/springloaded/1.2.1.RELEASE/springloaded-1.2.1.RELEASE.jar -noverify
请将”M2REPO”替换为每个人的Maven本地库路径。
请将”1.2.1″替换为要使用的版本。
通过这样做,可以使Springloaded生效。
接下来是关于模板引擎的自动重新加载。
Thymeleaf模板自动重新加载。
将以下内容添加到application.properties(或YML)文件中。
spring.thymeleaf.cache=false
FreeMarker模板的自动重载
将以下内容添加到application.properties(或YML)中。
spring.freemarker.cache=false
动态重载Groovy模板
请在application.properties(或YML)中添加以下内容。
spring.groovy.template.cache=false
Velocity模板自动重新加载
请在 application.properties(或YML)文件中添加以下内容。
spring.velocity.cache=false
2016/4/27 补充
如果您正在使用Spring Boot1.3以上的版本,建议不要再使用 Spring Loaded,因为它的开发已经停止了。建议改用可以在Spring Boot1.3及以上版本中使用的Spring Dev Tools。
我发现Spring Boot1.3以上版本无法很好地运行Spring Loaded,所以我改用了Spring Devtools,结果正如我所期待的一样。
苏君1899,Spring Loaded已经停止开发了,所以最好不要使用它。相反,您可以使用从1.3版本开始提供的Dev Tools。— Toshiaki Maki (@making) 2016年4月4日
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>