zoukankan      html  css  js  c++  java
  • SpringBoot热部署配置(基于Maven)

    热部署的意思是只要类中的代码被修改了,就能实时生效,而不用重启项目。spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

    其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader
    ,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

    下面基于maven实现SpringBoot的热部署解决方案:

    (1)在pom.xml文件中引入 spring-boot-devtools 依赖

    <!-- SpringBoot 热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <!-- 不传递依赖 -->
        <optional>true</optional>
    </dependency>

    (2)开启IntelliJ IDEA的自动编译(这里使用的IDEA版本是14.1.7)

    (3)打开命令行窗口,使用"mvn spring-boot:run"命令的方式来启动SpringBoot项目(经测试,如果通过直接运行SpringBoot的Main方法来启动项目的话,devtools是不会生效的):

    配置完毕,只要java类中的代码被修改了,通过控制台上的日志信息可以看到项目会自动重启,以使修改的文件实时生效。

    如果不想使用热部署了,可以通过配置来关闭热部署,比如:

    package com.xuebusi.springboot.maven;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * 启动类
     * Created by xuebusi.com on 2017/4/13.
     */
    @SpringBootApplication
    public class MavenApplication {
    
        public static void main(String[] args) {
            //热部署开关:true表示开启,false表示关闭
            System.setProperty("spring.devtools.restart.enabled","false");
            SpringApplication.run(MavenApplication.class, args);
        }
    }

    上面是在main方法中传递配置参数,当然也可以把spring.devtools.restart.enabled属性配置在项目的properties配置文件或者yml配置文件中,比如:

    参考的文章:

    http://412887952-qq-com.iteye.com/blog/2300313

  • 相关阅读:
    tp5 thinkphp5 伪静态修改 fastadmin
    ThinnkPHP内置视图循环语句
    PHP禁止重写策略
    冒泡排序
    Ruby--正则
    JS正则
    JS禁止父元素事件
    Rails--default_scope
    公网映射
    查企业情况和招聘的网站
  • 原文地址:https://www.cnblogs.com/jun1019/p/8074448.html
Copyright © 2011-2022 走看看