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

news2024/11/17 8:15:38

一、什么是热部署?

释义

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

对于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.coloradmin.cn/o/705834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyDSS视频直播点播平台视频回看列表显示为ID的排查与优化

视频直播点播EasyDSS平台具备灵活的视频能力&#xff0c;包括直播、点播、转码、管理、录像、检索、时移回看等&#xff0c;平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等能力服务&#xff0c;可应用在无人机推流、在线直播、虚拟直播、远程培训等场景中。…

String面试

以下讨论以jdk8为标准&#xff1a; String Pool&#xff1a;字符串常量池 存储字面量位于堆中&#xff0c;不在元空间intern()方法会去常量池找&#xff0c;没有的话就创建一个&#xff0c;返回常量池中的地址&#xff1b;有的话就直接返回对象地址 new String(“”)方法强制创…

3.Hive SQL数据定义语言(DDL)

1. 数据定义语言概述 1.1 常见的开发方式 &#xff08;1&#xff09; Hive CLI、Beeline CLI Hive自带的命令行客户端 优点&#xff1a;不需要额外安装 缺点&#xff1a;编写SQL环境恶劣&#xff0c;无有效提示&#xff0c;无语法高亮&#xff0c;误操作率高 &#xff08;2&…

IMX6ULL系统移植篇-uboot的配置与编译

一. 编译 uboot简介 开发板的资源 &#xff1a;256MB(DDR3) 512MB(NAND)核心板 这里使用的是阿尔法开发板&#xff0c;256MB的 DDR&#xff0c;核心板是 512MB的 Nand-Flash。 二. 编译 uboot 创建 /uboot/alientek_uboot 目录文件&#xff0c;将正点原子提供的 uboot源码包…

chatgpt赋能python:如何将Python图形居中

如何将Python图形居中 介绍 在Python编程中&#xff0c;绘图是非常重要的环节。无论是作为数据可视化的一部分&#xff0c;还是作为界面设计的基础&#xff0c;具有图形界面的Python应用程序都需要在屏幕上将图形元素居中。然而&#xff0c;很多新手在实现图形居中时往往会遇…

常州工学院计算机组成原理2022-2023第一学期补考

一、简答题&#xff08;共30分,每题6分&#xff09; 1、以将指令地址码指示的存储单元中的操作数取出后送至运算器的ACC中为例&#xff0c;完成一条指令的信息流程。 2、什么是RISC&#xff1f;请简述它的主要特点。比较RISC和CISC的异同之处。 RISC全称Reduced Instruction …

CentOS 执行yum命令报错【错误:为仓库 ‘appstream‘ 下载元数据失败: ...】

文章目录 一、遇到问题二、原因分析三、解决问题方案一&#xff1a;更新centos提供的yum源新地址1. yum源仓库配置文件内容2. 更新yum源新地址3. 测试yum安装命令 方案二&#xff1a;更新为 国内的yum源1. 使用 阿里的yum源2. 使用 网易的yum源3. 使用 清华的yum源 四、总结 一…

75、基于51单片机交通灯+人行道+左转系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

摘 要 近年来随着科技的飞速发展&#xff0c;单片机的应用正在不断深入&#xff0c;同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中&#xff0c;单片机往往作为一个核心部件来使用&#xff0c;仅单片机方面知识是不够的&#xff0c;还应根据具…

常州工学院数据库2022-2023第二学期期末答案

1. 不能够成功执行&#xff0c;因为关系R的主码为AB&#xff0c;故而关系重属性AB不可以完全相同&#xff0c;关系中已经存在了A1&#xff0c;B1&#xff0c;故而不能够将相同的A&#xff0c;B字段值放入关系中 2. update 职工 set 所在部门号 is null where 所在部门号 in(…

ARM接口题目

1)说出ARM可以工作的模式名字。 ARM有8个基本工作模式: User :非特权模式&#xff0c;大部分任务执行在这种模式 FIQ :当一个高优先级&#xff08;fast)中断产生时将会进入这种模式 IRQ :当一个低优先级&#xff08;normal)中断产生时将会进入这种模式 Supervisor :当复位…

云原生——Docker容器化实战

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 "Docker"一词指代了多个概念&#xff0c;包括开源…

Java9模块化学习总结

文章目录 JDK9 模块化新特性JDK9 模块化入门案例JDK9 模块化知识图谱1&#xff09;模块化语法2&#xff09;模块化迁移 小结 JDK9 模块化新特性 在 JDK9 之前&#xff0c;在日常开发中可能会遇到过以下问题&#xff1a; 工程依赖工具包的内部实现类。比如 sun.misc.BASE64Enc…

Wi-Fi 联盟的协议和标准

关于 WI-FI Wi-Fi技术&#xff08;Wireless Fidelity&#xff09;是一种用于在无线局域网&#xff08;WLAN&#xff09;中进行无线数据通信的技术。它基于IEEE 802.11标准&#xff0c;并使用无线电波进行数据传输&#xff0c;使设备能够通过无线信号进行互联和互通。 Wi-Fi协…

ubuntu22.04配置双网卡双静态ip不通网段访问服务器的相同服务

ubuntu22.04配置双网卡双静态ip不通网段访问服务器的相同服务 技术博客 http://idea.coderyj.com/ 1.需求 南方电网网段(假如)是 192.168.3.1的网段机器人服务器在隧道ip是 172.16.1.1网段要求这2个网段都能访问到服务器上的服务 2.解决方案 服务器上配置双网卡 双ip 以ubun…

力扣 -- 剑指offer47.礼物的最大价值

题目链接&#xff1a;剑指 Offer 47. 礼物的最大价值 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想对这道题的详细解答&#xff0c;相信各位小伙伴都能看懂并且掌握这一道题的。 参考代码&#xff1a; class Solution { public:int maxValue(vector<ve…

AutoSAR系列讲解(入门篇)4.5-BSW的Mode Management功能

一、架构与术语解释 Mode Management&#xff1a;模式管理&#xff0c;可以理解为对状态的管理&#xff08;比如ECU的上电、下电和休眠&#xff1b;CAN通讯的开启和关闭都是状态&#xff09;。主要管理的对象有ECU、BSW和COM&#xff08;通信中又可以细分很多&#xff09;。由…

概率论--数学期望与方差--协方差(详解)

目录 数学期望与方差 离散型随机变量的数学期望 注意 连续型随机变量的数学期望 方差 常用随机变量服从的分布 二项分布 正态分布 随机向量与随机变量的独立性 随机向量 随机变量的独立性 协方差 协方差的定义 协方差的意义 协方差矩阵 数学期望与方差 离散型随机…

STM32单片机(五)第二节:EXTI外部中断练习2(旋转编码器计次)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

C语言编程语法—结构

C 的令牌&#xff08;Tokens&#xff09; C 程序由各种令牌组成&#xff0c;令牌可以是关键字、标识符、常量、字符串值&#xff0c;或者是一个符号。例如&#xff0c;下面的 C 语句包括五个令牌&#xff1a; printf("Hello,World! \n"); 这五个令牌分别是&#x…

【Servlet学习六】Cookie 与Session 实现登录与上传文件

目录 一、Cookie与Session&#xff08;掌握&#xff09; &#x1f308;1、Cookie是什么&#xff1f; &#x1f308;2、Session是什么&#xff1f; 二、代码功能演示 &#x1f308;1、实现登录功能&#xff08;掌握&#xff09; &#x1f308;2、实现上传文件功能&#xf…