我一直在使用Spring Boot进行P.O.C。
目前来看,进展非常良好和有前途,但有一个主要的缺点:我正在使用嵌入式服务器(即将Web应用程序打包成.jar
),因此在开发过程中,每当我更改CSS、HTML或JS文件时,都必须重新构建jar并重新启动服务器。无法热交换,这真的会严重拖慢界面开发速度。
我可以想到几种快速解决方案,例如从不同域加载静态资源,并从本地nginx
提供服务,以及其他类似的变体,但在使用IntelliJ / Eclipse时是否有一些内置选项呢?
我一直在使用Spring Boot进行P.O.C。
目前来看,进展非常良好和有前途,但有一个主要的缺点:我正在使用嵌入式服务器(即将Web应用程序打包成.jar
),因此在开发过程中,每当我更改CSS、HTML或JS文件时,都必须重新构建jar并重新启动服务器。无法热交换,这真的会严重拖慢界面开发速度。
我可以想到几种快速解决方案,例如从不同域加载静态资源,并从本地nginx
提供服务,以及其他类似的变体,但在使用IntelliJ / Eclipse时是否有一些内置选项呢?
.class
文件。谢谢! - duma不过在使用IntelliJ/Eclipse时,难道没有内置选项吗?
在我的IntelliJ 15.0和Windows 10中,以下步骤对我有帮助:
步骤1:将以下依赖项添加到pom.xml文件中(虽然这个方法已经被到处提到,但单独这一步并不能解决问题),就像@jonashackt所说的那样。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
步骤2: 从文件->设置->构建-执行-部署->编译器 (确保选择主编译器选项而不是其任何子选项)
启用自动构建项目。 点击“确定”并关闭对话框 注意: 在最新版中,它将是自动构建项目
步骤3: 按住 Shift+Ctrl+A (在 Windows 上),您将看到一个带有标题“输入操作或选项名称”的搜索对话框,键入注册表。 双击第一个说“注册表…”的选项,它将打开另一个窗口。 查找以下选项:
compiler.automake.allow.when.app.running
要启用它,请单击关闭按钮。
步骤4:重新启动IDE。
本文详细说明自来源以来。
查看此文章以获取更多详细信息:http://blog.netgloo.com/2014/05/21/hot-swapping-in-spring-boot-with-eclipse-sts/
对我而言,它像魔法一样工作。
我的maven运行配置项配置如下:
我没有使用任何其他库(甚至没有使用spring-boot-devtools)。
就是这样。
建议在pom.xml文件中使用spring-boot-devtools标签
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
http://mytechnologythought.blogspot.com/2017/07/how-to-run-server-of-spring-boot-auto.html
optional=true
? - nabsterapply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'application'
applicationDefaultJvmArgs = ["-agentlib:jdwp=transport=dt_socket,address=localhost:7000,server=y,suspend=n"]
mainClassName = "package.ApplicationRunner"
使用命令gradle build run
从IDE或命令行运行应用程序。
现在,IDE可以连接到远程JVM(端口7000),其中Spring Boot应用程序正在运行。它还支持静态文件的热部署。
如果在IDE中正确管理了依赖项,甚至可以从intelliJ运行主类。主类是包含将调用SpringApplication.run("classpath:/applicationContext.xml", args);
的main方法的类。
运行>重新加载已更改的类
注意:在Intellij完成操作后,可能会说已加载类是最新的。没有要重新加载的内容
。这是误导性的,因为它实际上重新加载了您的类路径资源。您还可以使用JRebel - 它将重新加载所有更改(更好的热交换),包括Spring Bean。它很容易与Intellij和Eclipse集成。
从1.3.0版本(现在的里程碑版本2)开始,您可以使用spring-boot-devtools轻量级工具来实现此目的-请查看文档或此博客文章。 只需升级到>= 1.3.0,并将以下内容添加到您的pom.xml文件中:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
然后使用“Run As”启动您的SpringBootApplication,一切都会很好。
我推荐使用 Thymeleaf(模板引擎)和 jRebel for personal developer(个人开发者专用工具)。
Thymeleaf 模板文件只是 HTML 资源,因此在您编辑模板文件后它们会立即更改。