我一直在用Spring Boot做POC.
到目前为止,它一直很好,很有前途,但有一个主要缺点:我使用的是嵌入式服务器(即将Web应用程序打包在一起.jar
),所以在开发时我必须重建jar并每次重新启动服务器更改CSS,HTML或JS文件.没有热插拔.这确实减慢了UI开发速度.
我可以想到几个快速修复,例如从不同的域加载静态资源并从本地提供静态资源nginx
,以及更多这样的变体,但是在使用IntelliJ/Eclipse时没有某种类型的内置选项?
有几种选择.在IDE中运行(特别是在调试时)是一种很好的开发方式(所有现代IDE都允许重新加载静态资源,通常还可以热插拔Java类更改).Spring Boot devtools是一种获得相当大提升的廉价方式(只需将其添加到类路径中).它的工作原理是在检测到更改时在热JVM中重新启动应用程序.它还会在运行时关闭像百万美元高速缓存这样的东西,所以你不必记得自己这样做.如果您使用更高级别的工具编写该代码,则可以将其与外部css/js编译器进程一起使用.
不再推荐使用Spring Loaded,但可能仍在使用中.如果您需要零延迟的热交换(例如JRebel),更复杂的基于代理的工具可以更好地工作.
查看文档以获取最新内容
在Intellij中,我可以得到这种行为.程序在调试模式下运行时,选择Run > Reload Changed Classes
注意:在Intellij完成操作后,它可能会说Loaded classes are up to date. Nothing to reload
.这是误导性的,因为它实际上是DID重新加载您的类路径资源.
我的环境/设置包括:
Intellij 13
嵌入式Tomcat
运行/调试配置类型'Application'(它只使用一个主类)
提供静态html,css和js(没有jsp)
您也可以使用JRebel - 它将重新加载包括spring bean在内的所有更改(更好的hotswap).它很容易与Intellij和Eclipse集成.
但是在使用IntelliJ/Eclipse时是不是有某种内置选项?
在IntelliJ 15.0,Windows 10中帮助我的是以下顺序:
第1步:在pom中添加了以下依赖项(这在任何地方都有提及但是这个单独的dint解决了它),正如@jonashackt所提到的那样
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
第2步:然后从文件 - >设置 - >构建 - 执行 - 部署 - >编译器(确保选择主编译器选项,而不是其任何子选项)
启用自动生成项目.单击"确定"并关闭对话框
步骤3:按住Shift+ Ctrl+ A(在Windows上),您将看到一个标题为"输入操作或选项名称"的搜索对话框,键入registry.双击第一个选项"注册表...",它将打开另一个窗口.寻找以下选项:
compiler.automake.allow.when.app.running
并启用它,单击关闭
第4步:重新启动IDE
从这个来源阐述
假设你正在使用gradle; 在build.gradle中使用以下配置
apply 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"
使用命令从IDE或命令行运行应用程序 gradle build run
现在,IDE可以连接到运行spring boot应用程序的远程JVM(在端口7000上).它还支持静态文件的热部署.
如果在IDE中正确管理依赖项,甚至可以从intelliJ运行主类.主类是包含将调用的main方法的类SpringApplication.run("classpath:/applicationContext.xml", args);
你可以进行热交换:
对于java代码:使用spring-loaded
对于Thymeleaf模板:禁用缓存
查看此帖子以查看更多详细信息:http://blog.netgloo.com/2014/05/21/hot-swapping-in-spring-boot-with-eclipse-sts/
我不知道这种支持能走多远,但是如果您使用Eclipse IDE(或任何阅读此书的人):通过m2e在调试模式下启动Spring-Boot应用程序(按“ Debug”-下拉按钮并选择您的Maven运行配置项)。
它对我来说就像一种魅力。
我的maven运行配置项配置如下:
目标设置为“ spring-boot:run”
基本目录是项目目录
我没有使用任何其他库(甚至没有spring-boot-devtools)。
而已。