• Spring Boot (3) 热部署devtools


    热部署:当发现程序修改时自动启动应用程序。

    spring boot为开发者提供了一个名为spring-boot-devtools的模块来使sring boot应用支持热部署,提高开发者的开发效率,无需手动重启spring boot应用程序。

    devtools的原理

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

    在pom.xml中添加依赖:

            <!--热部署 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>

    编译节点添加:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    说明:

      devtools可以实现页面热部署,实现类文件热部署,实现对属性文件的热部署。即devtools会监听classpath下文件的变动,不过这种方式是属于项目重启,会清空session中的值,也就是如果有用户登陆的话,项目重启要重新登陆。

      默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

    Idea设置

      当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译.

    other settings -> default settings.

    command+shift+a 全局搜索

    找到compiler.automake.allow.when.app.running,勾上开启此功能即可

    此时重启项目即可生效,改动代码不用重启项目了

  • 相关阅读:
    Ubuntu 16.04 快速搭建ftp服务(转载)
    emmc协议简介(转载)
    产品经理简介
    小程序常用代码
    微信登录
    sql临时表与变量表
    备份数据库与还原数据库
    JQuery多个异步操作后执行(resolve,promise,when,done)
    苹果IOS下text-shadow与box-shadow失效的解决办法
    jS弹出新窗口被拦截的解决方法
  • 原文地址:https://www.cnblogs.com/baidawei/p/9102784.html
Copyright © 2020-2023  润新知