SpringBoot热部署配置方法详解

目录
  • 前言
  • 手动启动热部署
    • 热部署种类
    • 手动进行热部署
  • 自动启动热部署
  • 热部署范围配置
  • 热部署的关闭
  • 总结

前言

我们在了解一个东西的时候,总是喜欢问的就是为什么要?就是为什么我们需要这个,至少你要告诉我用这个的好处是什么;知道了需求然后学习,效率会好一些。

所以,我们为什么要学习热部署?想象一下这个情况,我们在开发的过程中,每次修改都要重启服务器才能够去重新部署项目,在项目较小的情况下还能忍受,但是如果做的是一个大型项目,部署一次消耗的时间成本很高。

所以热部署的作用 就是为我们免去这些时间上的损耗。热部署是更改代码或者配置直接生效,不用重新启动运行,这就是热部署。

手动启动热部署

热部署种类

实现热部署的方式有3种:

1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动

2.使用springloaded本地加载启动,配置jvm参数

3.使用devtools工具包,即开发者工具,归spring管理,操作简单,但是每次需要重新部署。

但是我们这里只介绍第三种,开始吧

手动进行热部署

  • 热部署既然是对项目的部署,首先我们至少有个简单点的项目
  • 老生常谈的创建项目我就直接上代码了

首先导入开发者工具:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>>

上面导入了开发者工具的坐标,可以看出这是一个归spring管理的工具,true表示两个项目之间依赖不传递,这个没必要深究。

开启热部署: 快捷键ctrl+F9

或者:

关于热部署的小知识:

  • 重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器
  • 重载(Reload):jar包,加载位置为base类加载器,我们启用热部署的时候,其实用的就是重启,因为我们依赖的哪些jar包,基本上是不会发生改变的,如果热部署的方案是重载,那就消耗了很多时间去重新加载这些不会改变的jar,没必要。

这里当我们每次对代码进行修改以后,都需要手动的去build,有没有不用自己手动的呢?有,自动启动热部署来了。

自动启动热部署

我们知道每次修改都手动一下build,有点麻烦,所以有了自动启动热部署。

第一步:settings——>build——>compiler

把红框里的东西打上勾。

第二步:我们需要找一个叫compiler.automake.allow.whenapp.running的key

快捷键:CTRL+alt+shift+/(这个有时候是有问号的才生效)

找了一圈没找到,什么情况呢?

原来是因为idea的版本不同,在低版本idea工具中适用以上方法,我使用的idea版本是2021版,需要另一种打开方式:

快捷键:ctrl+alt+s打开settings——>tools——>advanced settings(高级设置)——>勾选下图这个选项即可

自动启动热部署的激活方式:IDEA失去焦点后五秒钟启动热部署。

热部署范围配置

默认不触发重启的目录列表

/META-INF/maven

/META-INF/resources

/resources

/static

/public

/templates

什么意思呢?就是你更改这几个目录里的东西并不会触发热部署

除了默认的以外,我们还可以手动的配置不触发热部署的文件、目录、或者包

spring:
  devtools:
    restart:
      exclude: com/example/controller/*,com/example/entity/*

可以看到restart(重启)下面有exclude,翻译为中文就是除了什么之外,在后面可以配置不触发热部署的相关信息,可以配置多个,以逗号隔开。

热部署的关闭

我们可以开启热部署,当然也可以关闭热部署,一个热部署好关闭,但是如果在多个配置文件都设置了热部署,会不会起冲突,一个一个手动关闭,也确实浪费时间。

有没有什么办法可以禁用热部署的方法呢?有的,我们首先要了解一下属性加载的优先级:

其他看不到没事,我们看到第三个,Config data(such as application.properties),这不就是SpringBoot配置文件嘛。就是说我们的配置文件加载优先级处于第三,那就好办了,如果我们要禁用热部署,那么我们只需要在属性加载优先级高的地方先给它干掉,那属性低的加载到的时候,看到我们已经不同意它进行热部署了,它不就禁用了吗?

我们再找找,一看发现第6个,Java System properties(System.getProperties)不就是老熟人吗?不熟?

System.out.println("鸡你太美");

在javaSe阶段我们就学习过,它也是一个类。不过在这里它可以用来设置配置属性

好了,都了解了,接下来就是设置了

public static void main(String[] args) {
 System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(SpringBootHotdeploymentApplication.class args);
    }

分析,上面这个表示设置一个配置把restart.enabled设为false,而且是在SpringApplication.run之前设置,这样在整个应用没有去加载配置文件是就把更高级的配置设置好了。

总结

本文章是在仓促之下记的相关笔记和个人理解,有不对的地方希望大佬们在评论区中指点,鄙人再加以改正,万分感谢。

到此这篇关于SpringBoot热部署配置方法详解的文章就介绍到这了,更多相关SpringBoot热部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot在IDEA热部署的配置方法

    1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- optional=true,依赖不会传递,该项目依赖devtools:之后依赖myboot项目的项目如果想要使用d

  • idea配置springboot热部署终极解决办法(解决热部署失效问题)

    idea配置springboot热部署终极解决办法,解决热部署失效问题 1. 添加maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.2.5.RELEASE</version> <optional>true</opt

  • idea+ springboot热部署的配置方法

    热部署: 载入开发工具: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 设置配置<fork>true</fork>: <plugin> &

  • SpringBoot中热部署配置深入讲解原理

    目录 热部署 springboot项目热部署实现原理 在springboot中进行热部署操作步骤 重启与重载 自动启动热部署 参与热部署监控的文件范围配置 关闭热部署 总结 热部署 所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用.    对于Java应用程序来说,热部署就是在运行时更新Java类文件.    在以往,我们对java代码进行修改之后都需要重新启动应用,但是如果该项目进行了热部署,就可以在不重启项目的条件下,进行代码的更新. springboot项目热部署实现原理

  • Idea2022版本配置SpringBoot热部署的教程

    目录 2022版本配置SpringBoot热部署 1.IDEA版本 2. 添加依赖 3.更改IDEA设置 2022版本配置SpringBoot热部署 网上搜到的以前版本的都是更改Registry...,勾选compiler.automake.allow.when.app.running,然后新版的IDEA的Registry...里没有这个选项,最后找到了解决方案,亲测有效,链接如下: ref: In IntelliJ 2021.2 compiler.automake.allow.when.app

  • 详解SpringBoot配置devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtools的原理 深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个r

  • SpringBoot热部署配置方法详解

    目录 前言 手动启动热部署 热部署种类 手动进行热部署 自动启动热部署 热部署范围配置 热部署的关闭 总结 前言 我们在了解一个东西的时候,总是喜欢问的就是为什么要?就是为什么我们需要这个,至少你要告诉我用这个的好处是什么:知道了需求然后学习,效率会好一些. 所以,我们为什么要学习热部署?想象一下这个情况,我们在开发的过程中,每次修改都要重启服务器才能够去重新部署项目,在项目较小的情况下还能忍受,但是如果做的是一个大型项目,部署一次消耗的时间成本很高. 所以热部署的作用 就是为我们免去这些时间上

  • SpringBoot热部署设置方法详解

    目录 热部署 手动设置热部署 自动启动热部署 热部署配置范围 属性加载优先级 热部署 手动设置热部署 导入maven坐标 <!--热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 每次修改点击构建项目 这个还是的手动点击(c

  • idea激活ActivateJrebel热部署的方法详解

    在idea中安装完ActivateJrebel以后,运行时弹出激活页面, 输入团队地址: http://jrebel.whrj999.com/3d64b43e-0da7-40a3-925a-844e5a57aea8 自己的验证邮箱,再登录邮箱激活 配置热部署 启动ActivateJrebel 到此这篇关于idea激活ActivateJrebel热部署的方法详解的文章就介绍到这了,更多相关idea激活ActivateJrebel内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我

  • Apache,wsgi,django 程序部署配置方法详解

    本文实例讲述了Apache,wsgi,django 程序部署配置方法.分享给大家供大家参考,具体如下: 前面写过一篇文章,ngixn,uwsgi,django,python 环境配置,有兴趣的朋友可以参考 nginx,django部署 后来有人在QQ上问我,用Apache 好部署吗?我当时只在windows下用 APACHE2.3,django1.4,wsgi 部署过,还没有在 linux 下部署.前几天有时间,我在 centos 上测试部署了一下.也不难.唯一的差别是,在windows 下有已

  • springBoot整合rabbitMQ的方法详解

    引入pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0

  • SpringBoot整合Shiro的方法详解

    目录 1.Shito简介 1.1 什么是shiro 1.2 有哪些功能 2.QuickStart 3.SpringBoot中集成 1.导入shiro相关依赖 2.自定义UserRealm 3.定义shiroConfig 4.新建页面进行测试 1.Shito简介 1.1 什么是shiro Apache Shiro是一个java安全(权限)框架 Shiro可以非常容易的开发出足够好的应用,其不仅可以用在javase环境,也可以用在javaee环境 shiro可以完成,认证,授权,加密,会话管理,we

  • SpringBoot整合RocketMQ的方法详解

    目录 一:Ubuntu安装RocketMQ 二:添加RocketMQ依赖 三:在application中添加RocketMQ配置 四:编写消费者,消息生产者,消息实体类(自定义) 五:测试Controller 一:Ubuntu安装RocketMQ 1.下载(在下面地址选择自己需要的版本的rocketmq) http://rocketmq.apache.org/release_notes/ 2.解压,更改配置 将下载的zip文件解压到自己需要安装的位置 在unbuntu系统下需要修改安装跟目录下的

  • 动态上传jar包热部署的实战详解

    目录 定义简单的接口 该接口的一个简单的实现 反射方式热部署 注解方式热部署 测试 近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中.系统完成热部署,并切换该接口的实现. 定义简单的接口 这里以一个简单的计算器功能为例,接口定义比较简单,直接上代码. public interface Calculator {     int calculate(int a, int b);     int add(int a, int b);

  • SpringBoot yml配置文件读取方法详解

    目录 yaml介绍 yaml语法规则 yaml数据读取 Environment读取yaml全部属性数据 自定义对象封装指定数据 yaml介绍 YAML(YAML Ain't Markup Language),一种数据序列化格式 优点: 容易阅读 容易与脚本语言交互 以数据为核心,重数据轻格式 YANL文件扩展名 .yml(主流) .yaml 几种数据格式比较 yaml语法规则 大小写敏感 属性层级关系使用多行描述,每行结尾使用冒号结束 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许

  • hibernate5.2的基本配置方法(详解)

    目标:将Student实体对象加入数据库 1.首先需要下载三个东西:hibernate,slf4j,mysql. 2.分别取他们的包导入新建的项目中,我这里的版本是:hibernate-release-5.2.10里面lib目录下的required中的全部文件 slf4j-1.7.25下的受slf4j-nop-1.7.25.jar mysql的mysql-connector-java-5.1.42-bin.jar 3.在src下配置hibernate.cfg.xml(建议直接去文档复制然后改)

随机推荐