springboot 热部署的两种方式
问题的提出: 在编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来就真的是打几个Hello World就下班了。那么如何解决热部署的问题呢?那就是springloaded
运行方法一
使用spring-boot:run
使用方式一
在pom.xml文件添加依赖包:
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin </artifactId><dependencies> <!--springloaded hot deploy --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.4.RELEASE</version></dependency> </dependencies> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions></plugin>
运行方法二
如果使用的run as – java application的话,那么还需要做一些处理。 把spring-loader-1.2.4.RELEASE.jar下载下来,放到项目的lib目录中,然后把IDEA的run参数里VM参数设置为: -javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify 然后启动就可以了,这样在run as的时候,也能进行热部署
springboot + devtools(热部署)
问题的提出: 通过使用springloaded进行热部署,但是些代码修改了,并不会进行热部署。
spring-boot-devtools
1、spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。
2、其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader
3、这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。
使用方法二:
1、添加依赖包:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 --> <scope>true</scope> </dependency>
2、添加spring-boot-maven-plugin:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork> <!--fork : 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --></configuration></plugin></plugins> </build>
测试方法
修改类-->保存:应用会重启
修改配置文件-->保存:应用会重启
修改页面-->保存:应用会重启,页面会刷新(原理是将spring.thymeleaf.cache设为false)
三、不能使用分析
对应的spring-boot版本是否正确,这里使用的是1.4.1版本; 是否加入plugin以及属性<fork>true</fork> Eclipse Project 是否开启了Build Automatically(我自己就在这里栽了坑,不知道为什么我的工具什么时候关闭了自动编译的功能)。 如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。
springboot 热部署的两种方式相关推荐
- 【SpringBoot】项目实现热部署的两种方式
前言 spring boot : 2.0.0.RELEASE maven eclipse 另外还需清楚什么是热部署,以及为什么要热部署. SpringBoot项目中实现热部署的两种方式,使得部署变得异 ...
- SpringBoot之——热部署的两种方式
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/69940574 一.热部署 在项目开发过程中,常常会改动页面数据或者修改数据结构,为 ...
- SpringBoot配置绑定的两种方式
SpringBoot配置绑定的两种方式 演示文件 bean public class Student {private String name;private Integer age;public S ...
- SpringBoot 配置文件加密的两种方式
SpringBoot配置文件加密的两种方式 jasypt使用方式 用法一: 1.Application.java上增加注解@EnableEncryptableProperties(jasypt-spr ...
- SpringBoot定时任务实现的两种方式介绍
今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...
- springboot项目在idea中的热部署的几种方式
1. devtools依赖方式 我们在使用idea运行springboot项目时想要实现热部署,首先需要添加依赖 <dependency><groupId>org.spring ...
- go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)
go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...
- resin如何部署java项目_resin项目换成tomcat部署的两种方式
1.直接把Resin为服务器的工程根目录复制到tomcat的webapps下面,具体访问路径是:http://localhost:8080/webapp. 2.在tomcat的安装目录/conf/Ca ...
- java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载
不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...
最新文章
- R语言使用car包的influencePlot函数将回归分析中的离群点(outlier)、杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图
- Eclipse launch failed.Binary not found解决方案
- 百度地图与谷歌地球的偏差调整
- selenium之 chromedriver版本对照表
- 01)自学JavaScript
- Analyzer报表结果行
- 【Android】命令行jarsigner签字和解决找不到证书链错误
- windows下升级nodenpm
- 培养用户习惯才是软件的唯一出路!
- java .size,Java中length,length(),size()详解及区别
- 用Python解决简单的水果分类问题(一)
- python中arcsec_python – 更好的方法来计算Skyfield中两个物体的明显角度分离?
- Scratch 模拟病毒传染小程序
- 电磁学——电磁场与电磁波:麦克斯韦方程组
- 调用webservice服务方式总结
- 高效编写脚本的技巧分享
- [TimLinux] Python3 Coverity zeep/SOAP 库使用示例
- 乒乓球十一分制比赛规则_乒乓球比赛规则完整版
- 【Python编程:从入门到实践】第十六章练习题
- 谷歌浏览器网页翻译失效的解决方案