问题的提出: 在编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来就真的是打几个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 热部署的两种方式相关推荐

  1. 【SpringBoot】项目实现热部署的两种方式

    前言 spring boot : 2.0.0.RELEASE maven eclipse 另外还需清楚什么是热部署,以及为什么要热部署. SpringBoot项目中实现热部署的两种方式,使得部署变得异 ...

  2. SpringBoot之——热部署的两种方式

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/69940574 一.热部署 在项目开发过程中,常常会改动页面数据或者修改数据结构,为 ...

  3. SpringBoot配置绑定的两种方式

    SpringBoot配置绑定的两种方式 演示文件 bean public class Student {private String name;private Integer age;public S ...

  4. SpringBoot 配置文件加密的两种方式

    SpringBoot配置文件加密的两种方式 jasypt使用方式 用法一: 1.Application.java上增加注解@EnableEncryptableProperties(jasypt-spr ...

  5. SpringBoot定时任务实现的两种方式介绍

    今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...

  6. springboot项目在idea中的热部署的几种方式

    1. devtools依赖方式 我们在使用idea运行springboot项目时想要实现热部署,首先需要添加依赖 <dependency><groupId>org.spring ...

  7. go项目部署:docker部署go项目直接运行二进制文件部署(两种方式进行部署)

    go项目部署:docker部署go项目&直接运行二进制文件部署 引言:之前断断续续的接触到项目部署,一直没有详细的了解部署,于是最近就好好的专研一下项目的部署,前期准备:一个自己或者别人的具有 ...

  8. resin如何部署java项目_resin项目换成tomcat部署的两种方式

    1.直接把Resin为服务器的工程根目录复制到tomcat的webapps下面,具体访问路径是:http://localhost:8080/webapp. 2.在tomcat的安装目录/conf/Ca ...

  9. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

最新文章

  1. R语言使用car包的influencePlot函数将回归分析中的离群点(outlier)、杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图
  2. Eclipse launch failed.Binary not found解决方案
  3. 百度地图与谷歌地球的偏差调整
  4. selenium之 chromedriver版本对照表
  5. 01)自学JavaScript
  6. Analyzer报表结果行
  7. 【Android】命令行jarsigner签字和解决找不到证书链错误
  8. windows下升级nodenpm
  9. 培养用户习惯才是软件的唯一出路!
  10. java .size,Java中length,length(),size()详解及区别
  11. 用Python解决简单的水果分类问题(一)
  12. python中arcsec_python – 更好的方法来计算Skyfield中两个物体的明显角度分离?
  13. Scratch 模拟病毒传染小程序
  14. 电磁学——电磁场与电磁波:麦克斯韦方程组
  15. 调用webservice服务方式总结
  16. 高效编写脚本的技巧分享
  17. [TimLinux] Python3 Coverity zeep/SOAP 库使用示例
  18. 乒乓球十一分制比赛规则_乒乓球比赛规则完整版
  19. 【Python编程:从入门到实践】第十六章练习题
  20. 谷歌浏览器网页翻译失效的解决方案

热门文章

  1. 全球与中国工业低压变频器市场十四五前景规划和远景目标建议报告2022-2028年版
  2. Go 变量及基本数据类型2
  3. mybatis-generator自动生成mapper
  4. WPF整理-使用逻辑资源
  5. 消费者做出购买决策的流程
  6. Celery 使用(一)
  7. 百度运营专家:互联网运营必读书目(实用推荐)
  8. 深圳6月23号活动《产品经理三分钟》报名开始啦!
  9. Redis的LRU算法
  10. error while loading shared libraries的解決方法