[有书共读16]第五章-热部署

热部署

表面上:就是你引用spring-boot-devtools后,会自动侦测到你的代码变化,重启服务器。但是这个过程会比你手工重启服务器要快得多得多得多……。

深层实现原理:通过两个ClassLoader,一个用来加载相对固定的classes(static class loader),一个用来加载你开发中的classes(restart ClassLoader)。

graph TD
A(热部署)-->|外部jar包|B[static class loader]
A-->|你的java代码|C[restart ClassLoader]
B-->D[你的代码有变化这个不用重新创建]
C-->E(你的代码变了后会重启restart ClassLoader)

在pom文件中添加依赖

<!-- Spring Boot spring-boot-devtools 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
        <scope>true</scope>
    </dependency>

添加maven plugins

 <!-- 添加spring-boot-maven-plugin -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

以上代码写完后,就可以随意编辑代码测试啦。

书中代码:devtoolstest

如果想让前端模板也热部署,则需要在application.properties中加入:

 spring.thymeleaf.***=false

如果发现你的Eclipse不能热部署,那么检查你的自动编译是否打开喽。

Build Automatically
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务