Spring Boot 1.3 中的开发者工具

工程 | Phil Webb | 2015年6月17日 | ...

Spring Boot 1.3 将附带一个全新的模块,名为spring-boot-devtools。该模块旨在改进开发 Spring Boot 应用程序时的开发体验。

要使用该模块,您只需将其作为依赖项添加到您的 Maven POM 中

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

或您的 Gradle 构建文件中

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

包含后,spring-boot-devtools 模块提供了许多我们在下面介绍的优秀功能(如果您不想阅读文本,请跳至文章末尾观看简短视频)。

属性默认值

如果您使用过 Thymeleaf 等模板技术与 Spring Boot 1.2,您可能熟悉诸如spring.thymeleaf.cache之类的属性。这些属性用于禁用缓存,并允许您更新页面而无需重新启动应用程序。支持这些属性非常方便,但是记住在开发过程中设置它们一直有点麻烦。

现在,当您使用spring-boot-devtools模块时,您不再需要记住设置这些属性。在开发过程中,Thymeleaf、Freemarker、Groovy 模板、Velocity 和 Mustache 的缓存都会自动禁用。

自动重启

您过去可能使用过 JRebelSpring Loaded 等工具来为您的 Java 应用程序提供即时重新加载。这些工具很棒,但它们通常需要额外的配置或 IDE 插件才能工作(其中一些甚至需要付费!)。

在 Spring Boot 1.3 中,我们正在开发一些比这些“即时重新加载”技术略慢的东西,而是通过重新启动应用程序来工作。当您包含spring-boot-devtools模块时,任何类路径文件的更改都会自动触发应用程序重启。我们做了一些技巧来尝试保持重启速度,因此对于许多微服务风格的应用程序来说,此技术可能足够好。

实时重新加载

有了合理的“缓存属性”和“自动重启”功能,每次更改都需要手动点击浏览器刷新按钮开始变得有点乏味。因此,为了帮助您节省鼠标按键,Spring Boot 1.3 DevTools 包含一个嵌入式 LiveReload 服务器。LiveReload 是一种简单的协议,允许您的应用程序在发生更改时自动触发浏览器刷新。livereload.com 提供了适用于 Chrome、Firefox 和 Safari 的免费浏览器扩展。

远程调试隧道

如果您曾经尝试过使用 Docker 托管 Java 应用程序,或者如果您尝试过 Lattice 等微型 PaaS,您可能对调试代码的难度感到沮丧。您需要配置 Java 以使用-Xdebug启动,并以某种方式转发相应的端口,以便您可以连接远程调试器。

为了解决这个问题,Spring Boot 1.3 可以通过 HTTP 直接将 JDWP(Java 调试线协议)隧道连接到您的应用程序。这甚至可以与仅公开端口80443的互联网云提供商部署的应用程序一起使用(尽管由于 JDWP 是一种相当繁忙的协议,因此速度可能相当慢)。

远程更新和重启

DevTools 提供的最终技巧是支持远程应用程序更新和重启。这是通过监视本地类路径以查找文件更改并将它们推送到远程服务器(然后重新启动该服务器)来实现的。与本地重启一样,您也可以将此功能与 LiveReload 结合使用。

视频预览

本文中讨论的所有功能已在 Spring Boot 1.3.0.M1 中提供,详细文档可在 参考指南 中找到。如果您尚未准备好自己安装这些组件,这里有一个简短的视频展示了它们的工作方式

获取 Spring 电子报

通过 Spring 电子报保持联系

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部