3,Spring Boot热部署
问题的提出:
在编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来就真的是打几个Hello World就下班了。那么如何解决热部署的问题呢?那就是springloaded
一,使用方式一(不建议使用)-springloaded
1)在pom.xml文件添加依赖包:
<build>
<plugins>
<!-- 在这里添加springloader plugin-->
<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>
</plugins>
</build>
2)点击项目单击右键Run as -->Maven build 在弹出的窗口中的Goals添加:spring-boot:run,点击Run运行

3)浏览器访问getDatePersion方法:


修改getDatePersion方法,访问:


该方式在控制台结束后并不会释放8080端口,再次启动会报错(8080端口被占用):

二,使用方式二-springloaded
使用的run as – java application,需要做一些处理:
1,把spring-loader-1.2.4.RELEASE.jar下载下来,放到项目的lib(这个目录不固定)目录中

2,把IDEA的run参数里VM参数设置为:-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify 然后启动就可以了,这样在run as的时候,也能进行热部署。选择启动类右键菜单Run As-->Run Configurattions…

3,弊端:
第二种方法结束后会自动释放8080端口,但是我们在后台代码新增加一个方法,在前台访问是无法访问到的。
三,第三种方式,使用Spring-Boot-devtoos实现热部署(主要使用该方式)
1,简介
spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。
2,在pom.xml文件中添加依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
3,在pom.xml文件中添加spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart --
<fork>true</fork>
</configuration>
</plugin>
4,说明
1) devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。
2)devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(这里注意不同的模板配置不一样)
3,Spring Boot热部署的更多相关文章
- Spring Boot 系列(六)web开发-Spring Boot 热部署
Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...
- spring boot: 热部署spring-boot-devtools
spring boot: 热部署spring-boot-devtools 1引入spring-boot-devtools依赖包 <!-- spring boot devtools 热部署 --& ...
- spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar)
spring boot: 热部署(一) run as – java application (spring-loader-1.2.4.RELEASE.jar) 如果使用的run as – java a ...
- Spring Boot 热部署(转)
Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...
- Spring Boot热部署插件
在实际开发中,我们修改某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率,热部署是指当我们修改代码后,服务能自动重启加载新修改的内容,而不需要重启应用,这样大大提高了我们开发的效率. Spr ...
- spring boot热部署 -- 实现 后端java热更新 -- 详细操作 【idea 的 JRebel破解】
1.前言 上一随笔写了如何使得spring boot热更新前端 ,但后端java部分无法热更新. 对于Java热更新,以前常使用 springloaded ,但是缺点 和bug很多 无法实现真正意 ...
- spring boot 热部署,省去频繁编译的步骤
一.热启动: 每自修改后, 程序自动启动Spring Application上下文. Pom中直接添加依赖即可: <dependency> <groupId&g ...
- 关于使用 IDEA Spring Boot 热部署
1,POM 中引用 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- 一分钟搞定:spring boot 热部署 (基于Idea)
什么是热部署? 对于spring boot项目,修改后台的java类,不要重启整个项目,就可以测试/使用刚修改的功能! 怎么为项目添加/设置热部署 maven项目在pom.xml添加下方代码,联网引入 ...
随机推荐
- js 玩一玩
闲着没事学了学js,做了一个下页面玩玩. 下面是html代码: <!DOCTYPE html><html> <head> <meta charset=&quo ...
- ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet
Stylet是我最近发现的一个WPF MVVM框架, 在博客园上搜了一下, 相关的文章基本没有, 所以写了这个入门的文章推荐给大家. Stylet是受Caliburn Micro项目的启发, 所以借鉴 ...
- nginx之 nginx-1.9.7 + tomcat-8.5.15 反向代理+应用负载均衡 安装配置
环境说明:nginx 反向代理服务器 ip 为: 10.219.24.26tomcat1 应用服务器 ip 为: 10.219.24.21tomcat3 应用服务器 ip 为: 10.219.24.2 ...
- Ubuntu常用软件包管理命令
1.查看软件包xxx安装内容 #dpkg -L xxx 例子: #dpkg -L binutils //查看安装binutils包会安装哪些文件 2.列出系统已安装的或指定deb包的安 ...
- asp.net core中负载均衡场景下http重定向https的问题
上周欣喜地发现,微软官方终于针对 asp.net core 在使用负载均衡的情况下从 http 强制重定向至 https 的问题提供了解决方法. app.UseForwardedHeaders(new ...
- DW3 消息推送
1.新建项目 参见:http://www.cnblogs.com/yysbolg/p/yys_Blogs_java.html 2.添加jar包: commons-fileupload-1.2.jar ...
- eclipse debug URLClassPath.getLoader(int) file
版权声明:本文为博主原创文章,未经博主允许不得转载. URLClassPath.getLoader 在用Eclipse调试Java程序时,新手遇到的一个问题是断点老是执行不到,弹出URLClassPa ...
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
1:MongoDB的官方网址:https://www.mongodb.com MongoDB的中文社区:http://www.mongoing.com/(老外也很看重中国市场啊,知道大家英语不好, ...
- webpack3新特性介绍
6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...
- svn命令行便捷代码
在把分支merge回主干的时候,有时候需要只提交自己修改过的文件,但是很多文件其实分支上没动过,但却显示有变化,这个其实是属性发生了变化.svn通过svn:mergeinfo来记录merge的记录.所 ...