欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

优雅编程(四)——热部署

程序员文章站 2022-07-12 20:57:45
...

优雅编程(四)——热部署

引子

在开发SpringBoot的Web应用时,经常需要的重启Web服务器才能使最新修改的代码、配置文件、静态文件生效,这样就不够“优雅”了。想要改变这种情况也并不繁琐,需要我们加入“热部署”的支持,就可以在不重启Web服务器的情况下保证各项文件的修改立即生效。

正文

在IDEA中开发SpringBoot应用时,如果想加入热部署的加持,可以使用spring-boot-devtools来完成:

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

spring-boot-devtools会监听classpath下的文件变动,变动保存生效,其就会立即重启应用。

设置IDEA环境自动编译,首先开启设置中的项目自动编译选项:

优雅编程(四)——热部署

然后Find Action,找到Registry…打开,找到并勾选compiler.automake.allow.when.app.running:

优雅编程(四)——热部署

其实,完成上述步骤后,热部署就已经默认开启了。测试一下:

启动应用,去浏览器中请求一下/hello:

优雅编程(四)——热部署

然后去加一个Controller方法:

@RestController
public class Controller {
    public String hello(String temp){
        return "hello";
    }
}

稍等片刻,控制台就有重启应用的相关日志:

优雅编程(四)——热部署

重新发起请求:

优雅编程(四)——热部署


此时的效果是只要我们修改了编辑区的源代码,保存之后,应用程序便会自动重启让修改生效。

可以在application.properties中自定义热部署的配置:

#热部署生效,默认为true开启
spring.devtools.restart.enabled=true
#监听某个静态文件夹下文件的变化(如html文件),当其下面的文件改变的时候能够重新启动SpringBoot
spring.devtools.restart.additional-paths=src/main/resources/templates
#classpath目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude=WEB-INF/**