Spring Boot 有哪些方式可以实现热部署

news/2024/11/29 16:32:06/

一、什么是热部署?

释义

所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。

对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。

Tomcat的热部署(以后就不用重启了)

没有热部署和有热部署的开发效率是天差地别的。这个问题还受很多第三方软件包(Struts,Spring,Hibernate)的限制。本来可以热部署,加入了第三方的包就不可以了。所以,先说明详细的软件环境,和程序配置是非常必要的。

虚拟机:java version “1.5.0_06”
Servlet Engine:Apache Tomcat/5.0.27
Eclipse:3.0.1
Myeclipse:3.8.3

应用程序情况:纯正的servlet+jsp+javabean,数据库连接使用JDBC-ODBC桥连接Access数据库。没有使用任何第三方软件包,没有使用Struts,Spring,Hibernate。\WebRoot\WEB-INF\lib下是空的。

配置方法:

ie登陆http://Tomcat所在的服务器IP:8080/ -> 点超连接“Tomcat Administration”-> 输入用户名密码登陆 ->在左侧的功能树中 -> Tomcat Server -> Service(Catalina) -> Host(localhost) -> Context(/要修改的web项目) ->右侧新出现的页面中 ->Reloadable设置为true -> Save按钮 -> Commit Changes。

然后Tomcat日志显示:

  • debugging – changes saved to conf/server.xml
  • Removing web application at context path /test
  • Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml
  • Removing web application at context path /admin
  • unregistering logger Catalina:type=Logger,path=/admin,host=localhost
  • Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\admin.xml
  • Initializing, config=‘org.apache.struts.util.LocalStrings’, returnNull=true
  • Initializing, config=‘org.apache.struts.action.ActionResources’, returnNull=true
  • Initializing, config=‘org.apache.webapp.admin.ApplicationResources’, returnNull=true
  • Removing web application at context path /webdav
  • Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\webdav.xml
  • Removing web application at context path /test
  • Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml
    ……
    这样,设置就生效了。

开发时,修改.java文件后,调用这个类时日志提示:

Reloading this Context has started
这是正在重新加载修改后的.class文件。
如果没有进行这个设置,修改.java文件后,不抛出异常。系统使用没有修改的.java文件继续运行。
不同版本的Tomcat的配置方法是不同的。这里使用的是5.0.27
j2ee开发插件(这里使用Myeclipse),也可能导致热部署失效。因为插件必须要把编译好的.class文件从工作空间复制到Tomcat\webapps下的项目里。才能使Tomcat得到需要热部署的文件。
注意:如果项目中加入了Struts,Hibernate,Spring之类的第三方软件,可能导致热部署失效。

二、实现热部署方式

1.spring-boot-devtools

第一种方式是通过Springboot提供的开发者工具spring-boot-devtools来实现。
首先在pom.xml引用其依赖:

<!--快重启--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 可选 --></dependency>

然后在Settings→Build→Compiler中将Build project automatically勾选上,最后按ctrl+shift+alt+/ 选择registy,将compiler.automake.allow.when.app.running勾选。
如上,这样就可以实现热部署了。
但实际上,org.springframework.boot所实现的功能是快速启动,加上自动编译就能实现所谓的”热部署“了。
Build project automatically就代表着自动编译,但这项设定只在debug模式生效,所以要通过org.springframework.boot使其在普通运行模式也能自动编译。

注意:上面说Build project automatically在debug模式也能生效,但是经过我的测试,并不行,所以还是老老实实勾选compiler.automake.allow.when.app.running吧。另外,对于某些idea没有这个选项的,设置好其他的之后,ctrl+f9也是可以的。

2.idea的热部署功能

实际上idea已经带有一个热部署的功能了,如图:
在这里插入图片描述
如此设定之后,按道理还是设置Build project automatically和org.springframework.boot之后,就能实现热部署了

3.Jrebel

Jrebel是一款热部署插件,鉴于上面两个方法已经能完美实现热部署了,所以我认为没什么必要再去研究它,所以在这里只是了解一下还有这种方式就行了。
有需要的,可以去此处学习→IDEA JRebel 插件热部署(史上最全)
http://www.iocoder.cn/Fight/IDEA-JRebel-plug-in-hot-deployment/?self


http://www.ppmy.cn/news/674663.html

相关文章

手机使用FTP连接电脑,下载电脑中的文件

网络设置 首先要使电脑与手机连接在同一网段&#xff0c;可以使用手机开热点&#xff0c;电脑连接手机的wifi。 需要注意的是&#xff0c;手机使用FTP连接电脑&#xff0c;需要关闭电脑的防火墙。 手机下载AndFTP,进行相关设置 手机下载好AndFTP软件&#xff0c;打开&#x…

mac笔记本当做服务器记录

持续更新中~ 三更&#xff1a;放弃了mac&#xff0c;转战树莓派4b 二更&#xff1a;使用dp 创建虚拟机ubuntu&#xff0c;并设置网卡桥接&#xff0c;使用正常 已废弃&#xff1a;因为docker的权限问题各种坑 大致画了一下家庭布局图 目录 持续更新中~基础环境准备1&#xff1…

mac电脑如何下载git

1、安装Homebrew mac端安装brew的方法&#xff1a;只需要打开终端&#xff0c;输入以下代码即可: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 由于是外网&#xff0c;可能会安装不成功&#xff0c;报以…

Mac:查看Mac电脑IP,并且打开本地文件服务器,实现文件下载

Mac&#xff1a;查看Mac电脑IP&#xff0c;并且打开本地文件服务器&#xff0c;实现文件下载 一、查看电脑IP二、开启本地文件服务器三、浏览器查看本地文件服务器内容四、下载文件 一、查看电脑IP ipifconfig | grep "inet " | grep -v 127.0.0.1 |awk {print $2} …

AirServer在哪下载?如何免费使用教程

苹果手机投屏到电脑mac是怎么弄&#xff1f;你知道多少&#xff1f;相信大家对苹果手机投屏到电脑mac能在电脑上操作不是很了解&#xff0c;下面就让coco玛奇朵带大家一起了解一下教程。AIrServer是一款ios投屏到mac的专用软件&#xff0c;可将iOS上的音频&#xff0c;视频&…

根据excel的链接下载到电脑上

import pandas as pd import requests# 读取 Excel 表格 df pd.read_csv(rC:\Users\win10\Documents\WXWork\1688855780474743\Cache\File\2023-03\us_thinktank_art.csv)# 根据 pdf_url 列下载 PDF 文件&#xff0c;并将文件名保存在另一列中 df[pdf_filename] for i, row …

【下载】【you-get】用电脑下载网页视频

分享一下&#xff0c;此方法是在网络上看到的&#xff0c;但忘了出处。 一、前提 电脑安装了python软件&#xff0c;版本无要求。建议上官网下载软件。记得配置好环境&#xff08;将pyhton的scripts文件夹的路径加到用户变量里&#xff09;。 二、方法 1、安装you-get库 &am…

如何在电脑上搭建网页,让别人下载东西?

既然问这个问题了&#xff0c;那肯定用的是windows系统了&#xff0c; 可以用系统自带的IIS来搭建一个网页&#xff0c;只是为了下载的话甚至都不用自己的做网页。 以WIN10为例 先打开设置&#xff0c;打开应用 打开里面的可选功能&#xff0c;然后添加功能 在右边里有个更多wi…