首页 > 其他分享 >Springboot 实现热部署

Springboot 实现热部署

时间:2022-12-17 23:55:34浏览次数:64  
标签:Springboot 部署 spring 配置 boot idea 实现 devtools

1.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勾选。
如上,这样就可以实现热部署了。(操作完成,记得重启下IDEA)

但实际上,org.springframework.boot所实现的功能是快速启动,加上自动编译就能实现所谓的”热部署“了。

Build project automatically就代表着自动编译,但这项设定只在debug模式生效,所以要通过org.springframework.boot使其在普通运行模式也能自动编译。

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

例如:
对于idea2021,在如下地方进行修改:

关注:如果你每敲一个字母,服务器就重新构建一次,这未免有点太频繁了,所以idea设置当idea工具失去焦点5秒后进行热部署。其实就是你从idea工具中切换到其他工具时进行热部署,比如改完程序需要到浏览器上去调试,这个时候idea就自动进行热部署操作。

2.idea的热部署功能

实际上idea已经带有一个热部署的功能了,如下图:

再设置Build project automatically和org.springframework.boot
再编辑启动配置

按照图示点开窗口并修改设置,在每次更新时更新类和资源

OK,这样也能实现热部署(记得重启idea)

解决 spring boot devtool 热部署后出现访问404问题

DevTools的检测时间和idea的编译所需时间存在差异。在idea还没完成编译工作前,DevTools就开始进行重启和加载,导致@RequestMapping没有被全部正常处理。其他方法没试,就直接用了看起来最简单的方法:牺牲一点时间,去加长devtools的轮询时间,增大等待时间。

解决方案如下:yml配置文件新增配置

spring.devtools.restart.poll-interval=3000ms
spring.devtools.restart.quiet-period=2999ms
spring:
 devtools:
   restart:
    poll-interval: 3000
    quiet-period: 2999

参与热部署监控的文件范围配置

通过修改项目中的文件,你可以发现其实并不是所有的文件修改都会激活热部署的,原因在于在开发者工具中有一组配置,当满足了配置中的条件后,才会启动热部署,配置中默认不参与热部署的目录信息如下

/META-INF/maven
/META-INF/resources
/resources
/static
/public
/templates
​ 以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作

spring:
  devtools:
    restart:
      # 设置不参与热部署的文件或文件夹
      exclude: static/**,public/**,config/application.yml

通过配置可以修改不参与热部署的文件或目录

关闭热部署

线上环境运行时是不可能使用热部署功能的,所以需要强制关闭此功能,通过配置可以关闭此功能。

spring:
  devtools:
    restart:
      enabled: false

​ 如果当心配置文件层级过多导致相符覆盖最终引起配置失效,可以提高配置的层级,在更高层级中配置关闭热部署。例如在启动容器前通过系统属性设置关闭热部署功能。

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

其实上述担心略微有点多余,因为线上环境的维护是不可能出现修改代码的操作的,这么做唯一的作用是降低资源消耗,毕竟那双盯着你项目是不是产生变化的眼睛只要闭上了,就不具有热部署功能了,这个开关的作用就是禁用对应功能

这样就可以通过配置关闭热部署功能降低线上程序的资源消耗

参考链接:
https://blog.csdn.net/weixin_45525272/article/details/125465207
https://blog.csdn.net/qq_31217363/article/details/126392197
https://blog.csdn.net/Learning_xzj/article/details/125432819

标签:Springboot,部署,spring,配置,boot,idea,实现,devtools
From: https://www.cnblogs.com/lhongsen/p/16989843.html

相关文章

  • Kotlin + SpringBoot + JPA 服务端开发
    Kotlin+SpringBoot+JPA服务端开发本篇主要介绍一下kotlin+springboot的服务端开发环境搭建1.概述Kotlin是一个基于JVM的编程语言,是IDEA开发工具jetbrai......
  • day04-功能实现03
    家居网购项目实现038.功能07-后台管理显示家居8.1需求分析/图解给后台管理提供独立登录页面,管理员登录地址不对外公开管理员登录成功后,显示管理菜单页面管理员点......
  • C#实现观察者模式(Observer Pattern)的两种方式
    原文链接:https://www.jb51.net/article/260871.htm在观察者模式中有2个要素:一个是被观察对象,另一个是观察者。但被观察对象的状态发生改变会通知观察者。举例:把订阅报纸......
  • c# 单例模式的实现
    原文链接:https://www.jb51.net/article/205472.htm记一下学习单例模式的笔记:单例就是要保证该类仅有一个实例。实现完全封闭的单例(外部不能new)其实就要两点要求:全......
  • 原生js实现rsa加密
    原生js实现rsa加密示例createNewUserKey().then(function(keyPairs){encrypt("thisisorigintext",keyPairs[0]).then(function(res){console.log('......
  • 二分查找python与java实现
    定义给定以下情景,假设有一个有序的数组(从大到小排列),我们需要从中找出我们所需的目标元素并返回其索引。一般的思想是可以使用for循环进行遍历,直到找到目标元素......
  • java和springboot开发祭祀小程序扫墓系统
    介绍绿色祭祀小程序,用户微信授权登录后可以发布纪念馆(祭祀名人,祭祀英烈,祭祀个人,可以设置成公开状态或者隐私状态)购买祭祀礼物和留言,用户还可以发布代祭的信息演示视频小......
  • Linux 7实现多网卡绑定—bond0方式
    文档课题:Linux7实现多网卡绑定—bond0方式.系统:centos7.964位环境介绍:vmware虚拟机+网卡为NAT模式.说明:此次演示bond0,bond地址192.168.133.1201、添加网卡添加2......
  • Linux项目部署
    手工部署项目第一步,将所要部署的项目打成jar包第二步,将jar包上传到linux服务器创建目录:mkdir/usr/local/app,输入rz上传jar包第三步,启动springboot程序:在目录下输入......
  • springboot + rabbitmq发送邮件(保证消息100%投递成功并被消费)
    一、先扔一张图image.png说明:本文涵盖了关于RabbitMQ很多方面的知识点,如:消息发送确认机制消费确认机制消息的重新投递消费幂等性,等等这些都是围绕上面那张整体流程图......