美文网首页
SpringBoot项目在IntelliJ IDEA中实现热部署

SpringBoot项目在IntelliJ IDEA中实现热部署

作者: 你慧快乐 | 来源:发表于2018-09-06 16:41 被阅读0次

    开发时如果不能实现热部署其实是件挺坑爹的事情,每次修改点东西还必须要手动重启,也影响开发效率和进度。
    下面就说下在Idea中依托maven项目怎么实现热部署
    第一:快捷键CTRL + SHIFT + A,输入 make project automatically,进入后勾选此选项,确定并推出。
    第二:CTRL + SHIFT + A,输入Registry,找到并勾选compiler.automake.allow.when.app.running,直接关闭即可
    第三:在项目中添加依赖

    <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>
    

    按照以上步骤已经可以实现项目在修改后会自动重启了,特别指出,在修改类文件和配置文件后,应用会重启,修改页面并不会让应用重启,但是会应用最新的修改。
    默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载,这是应为devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新
    也可指定重启的目录,哪些目录文件修改重启以及排除修改重启

    #开启热部署
    spring.devtools.restart.enabled= true
    #设置重启的目录
    spring.devtools.restart.additional-paths= src/main/java
    #设置文件修改不重启,相对于classpath
    spring.devtools.restart.exclude= WEB-INF/**
    

    其原理是使用了多个ClassLoader,devtools监听文件的改动,发现有更改后即会重新创建一个ClassLoader替换之前的ClassLoader,我们从启动日志信息里也可看出来。


    不使用devtools 使用devtools

    可以看出,使用devtools后启动线程名称从main变为restartedMain,而且还使用LiveReload server来实现重新加载

    相关文章

      网友评论

          本文标题:SpringBoot项目在IntelliJ IDEA中实现热部署

          本文链接:https://www.haomeiwen.com/subject/kdixgftx.html