先行一步
VMware 提供培训和认证,为您的进步提供强大动力。
了解更多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
模块提供了一些我们将下面介绍的优秀功能(如果您不想阅读文本,可以跳到文章末尾观看简短视频)。
如果您曾在 Spring Boot 1.2 中使用过 Thymeleaf 等模板技术,您可能熟悉诸如 spring.thymeleaf.cache
的属性。这些属性用于禁用缓存,并允许您在无需重新启动应用程序的情况下更新页面。支持这些属性非常方便,但在开发过程中始终记住设置它们却有点麻烦。
现在,当您使用 spring-boot-devtools
模块时,您不再需要记住设置这些属性。在开发过程中,Thymeleaf、Freemarker、Groovy Templates、Velocity 和 Mustache 的缓存都会自动禁用。
您可能过去使用过 JRebel 或 Spring Loaded 等工具来为您的 Java 应用程序提供即时重载。这些工具很棒,但它们通常需要额外的配置或 IDE 插件才能工作(有些甚至要花钱!)。
在 Spring Boot 1.3 中,我们一直在研究一种比这些“即时重载”技术稍慢的方法,它通过重新启动您的应用程序来工作。当您包含 spring-boot-devtools
模块时,任何 classpath 文件更改都会自动触发应用程序重启。我们做了一些技巧来尝试保持重启速度快,因此对于许多微服务风格的应用程序来说,这种技术可能已经足够了。
有了合理的“缓存属性”和“自动重启”功能,每次有变化时都需要手动点击浏览器刷新按钮就开始变得有点繁琐。为了帮助您节省鼠标按钮,Spring Boot 1.3 DevTools 包含一个嵌入式 LiveReload 服务器。LiveReload 是一种简单的协议,允许您的应用程序在发生变化时自动触发浏览器刷新。Chrome、Firefox 和 Safari 的浏览器扩展可以在 livereload.com 上免费获取。
如果您曾尝试使用 Docker 托管 Java 应用程序,或者尝试过 Lattice 等微型 PaaS,您可能会因为调试代码的困难而感到沮丧。您需要配置 Java 以 -Xdebug
启动,并以某种方式转发适当的端口,以便您可以附加远程调试器。
为了解决这个问题,Spring Boot 1.3 可以通过 HTTP 直接将 JDWP(Java Debug Wire Protocol)隧道到您的应用程序。即使部署到仅暴露端口 80
和 443
的互联网云提供商的应用程序,这也可以工作(尽管由于 JDWP 是一个相当“话痨”的协议,这可能会很慢)。
DevTools 提供的最后一个技巧是支持远程应用程序更新和重启。这通过监控您的本地 classpath 的文件更改并将其推送到远程服务器,然后远程服务器进行重启来实现。与本地重启一样,您也可以将此功能与 LiveReload 结合使用。
本文讨论的所有功能均已在 Spring Boot 1.3.0.M1 中提供,并且可以在参考指南中找到详细文档。如果您还没准备好亲自安装,这里有一个简短的视频演示了它们如何工作