SpringBoot实现热部署

热部署,就是不需要停掉服务,可以线上改,改完立马生效。

1.为什么用热部署?

因为不启用热部署时每次更改java数据都要重启服务器影响开发效率。

2.热部署的实现原理?

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

3. 热部署的实现方式


springboot有3中热部署方式:

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

		
       
        
            org.springframework.boot
            spring-boot-devtools
            true
            true
        

然后在Settings→Build→Compiler中将Build project automatically勾选上,最后按ctrl+shift+alt+/ 选择registy,将compiler.automake.allow.when.app.running勾选。另外,对于某些idea没有这个选项的,设置好其他的之后,ctrl+f9也是可以的。

(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
(2)配置了true后在修改java文件后也就支持了自动部署,不过这种方式是属于项目重启,会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。
 

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

-javaagent: -noverify

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

由于本人只用过一种,其他两种方式也是百度出来的没有实践过,后期进行学习了再详写
 

你可能感兴趣的:(Spring,Boot,spring,boot,java,spring)