一般我们的项目都会引各种依赖和配置项,项目的启动往往比较耗时。可能 debug 的过程中发现需要修改的地方,改了之后如果每次都重启服务会耗费大量时间,减少摸鱼时间。热部署就是为了解决每次服务都要重启的问题,提升我们工作效率。
常用的热部署方式有3种:
-
SpringBoot Configuration方式; -
spring-boot-devtool; -
JRebel。
一起来看下怎么用
Spring Boot Configuraion
这是 Idea 给我们提供的热部署方式。
IDEA 官方介绍:
https://www.jetbrains.com/help/idea/updating-applications-on-application-servers.html
我们在工具栏上点开项目,选择 Edit Configuration
,弹出下面的界面:
可以看到在 Running Application Update Policies
下有两个选项:
-
On ‘Update’ action: 当你选择这个选项时,自动编译和更新操作只有在你显式执行 “Update” 操作时才会触发。显式执行”Update”操作就是通过手动点击【 Build Project
】时触发。这种方式可以使你完全控制编译和更新的时机,避免频繁的自动更新。(快捷键:Ctrl + F10) -
On frame deactivation: 当你选择这个时,每当 IntelliJ IDEA 的窗口失去焦点(即你切换到其他应用程序)时,IDE 会自动编译并更新运行中的应用程序。它适合那些需要频繁编译和更新的开发场景。
当两个都选了时,会使用第二种策略,即失去焦点时自动更新。一般大型项目建议使用第一个选项,否则频繁地自动更新会耗费较多资源。
当我们选择 On 'Update' action
时,有几种方式可供选择(不同版本可能展示的有差异),不同选项的作用见 Idea 的备注:
一般选择 Update classes and resources
,它会编译所有修改的类文件和资源文件。
spring-dev-tools
这个工具是依赖 Liveload 服务器实现的,使用了两个类加载器ClassLoader
,一个ClassLoader
加载不会发生更改的类(第三方jar包),另一个ClassLoader(restart ClassLoader)
加载会更改的类(自定义的类)。
使用方式很简单,pom文件中引入依赖即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 可以防止将devtools依赖传递到其他模块中 -->
</dependency>
然后也是手动点击【Build Project
】即可触发热部署。当然也可以配置 Idea 的自动更新。
JRebel
JRebel是一个 JVM 插件,在 Idea 中可以直接安装,下面是官网的介绍:
JRebel is a JVM plugin that streamlines Java application development by skipping the time-consuming build and redeploy steps. With JRebel, developers can view code changes in real time, preserve application state, and increase coding efficiency.
-
插件安装 直接搜 JRebel and XRebel 安装即可。 -
激活,这个网上搜下。 -
设置增量编译:
-
double shift,输入 register:
使用JRebel启动项目。
来源:juejin.cn/post/7378328335036088359
没有回复内容