弹簧靴中的热插拔

我一直在用Spring Boot做一个P.O.C。

到目前为止,它一直进展得非常好,很有前途,但有一个主要缺点:我使用的是嵌入式服务器(即,将Web应用程序打包成一个),所以在开发时,我必须重建jar并在每次更改CSS,HTML或JS文件时重新启动服务器。没有热插拔。这确实减慢了UI开发的速度。.jar

我可以想到几个快速修复,例如从不同的域加载静态资源并从本地提供它,以及一些类似的变体,但是在使用IntelliJ / Eclipse时,难道没有某种内置选项吗?nginx


答案 1

有几种选择。在IDE中运行(特别是在调试的情况下)是进行开发的好方法(所有现代IDE都允许重新加载静态资源,并且通常还允许热交换Java类更改)。Spring Boot devtools是一种获得相当大的提升的廉价方式(只需将其添加到您的类路径中即可)。它的工作原理是在检测到更改时在热 JVM 中重新启动应用程序。它还会在运行时关闭诸如thymeleaf缓存之类的东西,因此您不必记住自己执行此操作。如果您使用更高级的工具编写该代码,则可以将其与外部css / js编译器进程一起使用。

不再推荐使用弹簧加载,但可能仍在使用中。更复杂的基于代理的工具,如果您需要零延迟的热插拔(例如JRebel),则效果要好得多。

请参阅文档,了解一些最新内容


答案 2

但是在使用IntelliJ / Eclipse时,难道没有某种内置选项吗?

在 IntelliJ 15.0(Windows 10)中帮助我的是以下顺序:

第 1 步:在pom中添加了以下依赖项(这在任何地方都提到过,但仅此一点就无法解决它),正如@jonashackt

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
</dependency>

第 2 步:然后从文件->设置->构建-执行-部署->编译器(确保选择了主编译器选项,而不是其任何子选项)

启用“自动生成项目”。单击确定并关闭对话框 注意:在最新版本中,它将自动生成项目

第 3 步:按住++(在窗口上),您将看到一个标题为“输入操作或选项名称”的搜索对话框,键入注册表。双击显示“注册表...”的第一个选项它将打开另一个窗口。查找以下选项:ShiftCtrlA

compiler.automake.allow.when.app.running

并启用它,单击关闭

第 4 步:重新启动 IDE

从这个来源详细阐述


推荐