springboot如何实现热部署

进行springboot的web开发过程中,我们很多时候经常需要重启web服务器才能保证修改的源代码文件、或者诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。我们可以采用热部署的方式解决此类问题。热部署是指我们不需要重启web server就可以保证各项文件修改的立即生效。

springboot有三种实现热部署方式:

1. 使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动

2. 使用springloaded本地加载启动,配置jvm参数

-javaagent:<jar包地址> -noverify

3. 使用devtool工具包,操作简单,但是每次需要重新部署

第一种

1. 原来的pom.xml文件中添加如下配置

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>springloaded</artifactId>
    <version>1.2.8.RELEASE</version>
</dependency>

注意:需要在spring-boot-maven-plugin中添加dependency

2. 启动方式变为maven启动

在项目文件夹dos窗口输入命令:mvn spring-boot:run

注意:停止服务只能使用ctrl+c,如果设置后台启动,需要kill进程

第二种

1. 第二种和第一种采用的同样方式,不过需要将spring-loaded下载下来,

将下面这局代码放到VM arguments中,如图:

-javaagent:D:\maven_jar\springloaded-1.2.8.RELEASE.jar -noverify

注意:红色字为你的jar包所在位置

解释: -javaagent:命令后面跟冒号,意为是在执行main方法之前执行特定代码

            -noverify关闭java字节码校验功能

 然后直接run启动就行了。

第三种

1. 在pom.xml中添加一个热部署依赖,

<!-- 热部署 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
</dependency>

启动项目即可。

小结:

       在开发测试环境下可取第三种,方便快捷。

      在生产环境下,建议使用第二种,使用脚本启动。

springboot实现热部署的原理:

       深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

如有不足,欢迎留言指正,望不吝赐教。。。

发布了171 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/105346250