解决SpringBoot频繁启动,开发效率低(彻底搞懂真正实现热部署)

SpringBoot热部署,解决SpringBoot频繁启动,开发效率低

1.引入热部署插件

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
dependency>

增加完成热部署后,我们需要可以使用ctrl+f9,启动项目,达到热部署

那么ctrl+f9和重启项目有什么区别呢

重启(Restart):自定义开发代码,包含类,页面,配置文件等,加载位置restart类加载器(热部署)

重载(ReLoad):jar包,加载位置base类加载器。(重启项目)

注意:热部署仅仅加载当前开发者自定义开发的自愿,不加载jar资源
在这里插入图片描述

2.进一步完善

增加完成热部署后,我们修改完代码后,仍需要Ctrl+f9重新启动,虽然启动效率更快了一些,但似乎并没有什么卵用。

因此我们需要进一步的设置

2.1 在setting中进行设置

file-setting-build-compiler- 勾选Build project automatically
解决SpringBoot频繁启动,开发效率低(彻底搞懂真正实现热部署)_第1张图片

2.2 在maintenance中registery设置

在IDEA中按下Ctrl+shift+alt+/
解决SpringBoot频繁启动,开发效率低(彻底搞懂真正实现热部署)_第2张图片
勾选 compiler.automake.allow.when.app.running
解决SpringBoot频繁启动,开发效率低(彻底搞懂真正实现热部署)_第3张图片
勾选完成后,当我们IEDA失去焦点5秒后,项目将自动进行重启

3.注意点

当我们的java文件发送变化时,在下一次热部署就会体现。

当我们的静态资源(界面等)发生变化,不会影响热部署,只要我们刷新界面就会发生效果的改变

  • 默认不参与热部署的配置
    • /META-INF/maven
    • /META-INF/resources
    • /resourses
    • static
    • /public
    • templates

如果不想让某些文件夹不参加热部署,可以在配置中声明

  devtools:
    restart:
      exclude: static/**

如果不想让当前项目参与热部署时,可以其后追加上 enable:true

注意:如果我们在项目中有比此配置文件优先级高时,我们可以在启动类中声明系统属性,此操作必定有效

  • 摄者高优先级属性禁用热部署
@SpringBootApplication
public class SsmpApplication {
    public static void main(String[] args) {
        System.setProperty("spring.devtools.restart.enabled","false");
        SpringApplication.run(SsmpApplication.class, args);
    }
}

你可能感兴趣的:(Spring,spring,boot)