【Spring Boot】开发环境热部署

开发环境热部署

在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、重新启动,整个过程非常麻烦,影响开发效率。下面介绍Spring Boot如何解决这个问题。

1.devtools实现原理

我们在开发调试Spring Boot项目时,需要经历重新编译、重新启动程序的过程。由于系统启动时,需要加载一系列的组件和依赖包,因此整个过程非常耗时,大大影响开发效率。

Spring Boot在这方面做了很好的支持,提供了spring-boot-devtools组件,使得无须手动重启Spring Boot应用即可重新编译、启动项目,大大缩短编译、启动的时间,从而提高开发效率。

spring-boot-devtools的核心是两个类加载器(ClassLoader):一个是Base类加载器(Base ClassLoader),负责加载那些不会改变的类,如第三方JAR包等;另一个是Restart类加载器(Restart ClassLoader),负责加载那些正在开发的会改变的类。这样如果只修改Java代码,devtools只会重新加载被修改的类文件,不会重新加载其他第三方的JAR包,所以重启较快,从而达到热部署的效果。

我们在项目中引入devtools组件之后,devtools会监听classpath下的文件变动,当文件被修改时会重新编译,重新生成类文件;devtools监听到类文件变动,触发Restart类加载器重新加载该类,从而实现类文件和属性文件的热部署。

需要注意的是,并不是所有的更改都需要重启应用(如静态资源、视图模板)。我们可以通过设置spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应用。例如,可以设置/static和/public下的所有文件更新都不触发应用重启。

2.配置开发环境热部署

步骤01 在pom.xml配置文件中添加dev-tools依赖。

在这里插入图片描述
在上面的示例中,使用optional=true表示依赖不会传递,即该项目依赖devtools;其他项目如果引入此项目生成的JAR包,则不会包含devtools,如果想要使用devtools,则需要重新引入。

步骤02 在application.properties中配置devtools。

在这里插入图片描述
上面的配置主要是打开devtools热部署,然后指定监控的后台文件目录,最后指明文件变更不需要重新编译部署的目录。配置完成之后,devtools会监听classpath下的文件变动,并且会立即重启应用。

需要注意的是,devtools也可以实现前台页面热部署,即页面修改后会立即生效,需要在application.properties文件中配置spring.thymeleaf.cache=false,以指定不缓存前端页面。

步骤03 验证配置是否生效。

配置完成后,需要验证热部署是否生效。首先启动项目,修改项目中的某个java文件,然后在IDEA后台可以看到devtools自动重启应用。

修改java后台代码就会发现Spring Boot已经重新编译该文件,然后自动重新加载,无须手动重启。

猜你喜欢

转载自blog.csdn.net/weixin_45627039/article/details/131658801
今日推荐