Boot 1.3 引入了一组新的开发者工具,使得开发时更轻松地使用 Boot,包括以下功能。
Boot 的开发者工具以库的形式存在,可以作为依赖项添加到您的项目中。如果您使用 Boot 构建项目,则可以将开发者工具添加到 .. 文件中,如下所示:
compile "org.springframework.boot:spring-boot-devtools"
将其添加到 POM 中,如下所示:
org.springframework.boot spring-boot-devtools
当应用程序作为完全打包的 JAR 或 WAR 文件运行时,开发人员工具将被禁用,因此在构建生产部署之前无需删除此依赖项。
1. 自动重启
激活开发人员工具后,对文件的任何修改都会触发应用程序重启。为了加快重启速度,不会被修改的类(例如第三方 JAR 文件中的类)将加载到基类加载器中,而应用程序代码将加载到单独的重启类加载器中。检测到更改时,只会重启重启类加载器。
/home/boot/ 中的某些资源在更改后不需要重新启动应用程序。 此类视图模板可以直接编辑,而无需重新启动应用程序。 /home/boot/ 或 /home/ 中的静态资源也不需要重新启动应用程序,因此 Boot 开发人员工具将在重新启动时排除以下目录:/META-INF/、/home/boot...
您可以设置 ... 属性来覆盖默认的重启排除目录。例如,如果您只想排除 / 和 / 目录,您可以像这样设置 ...:
spring: devtools: restart: exclude: /static/**,/templates/**
另一方面,如果您想完全关闭自动重启,您可以将...设置为:
spring: devtools: restart: enabled: false
此外,您还可以设置一个触发文件,该文件必须经过修改才能触发重启。例如,如果您不希望在修改带有 . 的文件之前进行重启,您可以简单地设置 ...-file 属性,如下所示:
spring: devtools: restart: trigger-file: .trigger
如果您的 IDE 持续编译修改后的文件,则触发文件非常有用。如果没有触发文件,每次更改都会触发重新启动。使用触发文件,您可以确保仅在您希望重新启动时才发生重新启动(只需修改触发文件)。
二,
Web应用程序开发过程中最常见的步骤大致如下:
虽然这并不难,但如果不用点击刷新就能直接看到变化,不是更好吗?
Boot 的开发者工具集成在(),可以省去刷新步骤。激活开发者工具后,Boot 会启动一个内嵌的服务器,当资源文件发生变化时,该服务器会触发浏览器刷新。你要做的就是在浏览器中安装该插件。
如果您想禁用嵌入式服务器,您可以设置...为:
spring: devtools: livereload: enabled: false
3.远程开发
当远程运行应用程序(例如部署到服务器或云端)时,开发者工具的自动重启和功能是可选的。此外,Boot 开发者工具还可以远程调试 Boot 应用程序。
在传统开发中,你不会开启远程开发,因为这会影响性能。但在某些特殊场景下,这样的工具非常有用。例如,出于开发目的,正在开发的应用程序部署在非生产环境中。如果应用程序不在本地开发环境中,而是部署在云端,情况尤其如此。
您必须设置远程安全代码才能启用远程开发:

spring: devtools: remote: secret: myappsecret
使用此属性,正在运行的应用程序将启动一个服务器组件来支持远程开发。它将监听接受更改的请求,并可以重新启动应用程序或触发浏览器刷新。
为了使用这个远程服务器,您需要在本地运行远程开发工具的客户端。这个远程客户端是一个类,其完全限定类名为 org..boot..ion。它将在 IDE 中运行,并需要一个参数来告知远程应用程序的部署位置。
例如,假设您正在远程运行阅读列表应用程序,部署于 ,时间为 。如果您正在使用 或 ,则可以按照以下步骤启动远程客户端。
选择 Run > Run 菜单项。创建一个新的 Java 运行配置。选择 List in(您可以键入项目名称或单击按钮查找项目,见图 A-1)。在 Main 中键入 org..boot..-(见图 A-1)。切换到选项卡页并键入 io in(见图 A-2)。
图A-1 ion是远程开发者工具客户端
图 A-2 ion 将远程应用程序的 URL 作为参数
客户端启动后,您可以在 IDE 中修改应用程序。检测到更改后,这些更改将被推送到远程端并应用。如果更改涉及渲染的 Web 资源(例如样式表或),它还会触发浏览器刷新。
远程客户端还会打开基于 HTTP 的远程调试通道,这样你就可以在 IDE 中调试远程部署的应用程序。你只需要确保远程应用程序已打开远程调试即可。这通常可以通过配置来实现。
例如,如果你的应用程序部署在 上,你可以在应用程序的.yml 中进行如下设置。
--- env: JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"
当远程应用启动后,会与本地调试服务器建立连接,可以在远程应用中设置断点,并单步调试代码,就像在本地运行一样(不过由于网络原因,速度会慢一点)。
4. 默认开发属性
一些配置属性通常在开发期间设置,在生产中从不使用。例如,视图模板缓存最好在开发期间关闭,以便您可以立即看到更改的结果。但在生产中,为了获得更好的性能,您应该打开视图模板缓存。
默认情况下,Boot 会为其支持的各种视图模板(视图、视图、视图和视图模板)启用缓存选项。但是,如果存在 Boot 的开发人员工具,则这些缓存将被禁用。
实际上,这意味着当开发人员工具被激活时,将设置以下属性:
这样,您不必在开发期间(在开发配置中)禁用它们。
5. 全局配置开发者工具
您可能已经注意到,使用开发者工具时,您经常在多个项目中使用相同的设置。例如,如果您使用重启触发器文件,则很可能会在多个项目中使用相同的触发器文件名。全局配置开发者工具比在每个项目中重复配置开发者工具更方便。
为此,请在主目录中创建一个名为 .-boot- 的文件。(请注意,文件名以“。”开头。)在该文件中,您可以设置要在多个项目之间共享的各种开发人员工具属性。
例如,假设您要将触发器文件的名称设置为 . 并在所有 Boot 项目中禁用它。您可以创建一个包含以下内容的 .-boot-. 文件:
spring.devtools.restart.trigger-file=.trigger spring.devtools.livereload.enabled=false
如果您希望覆盖这些配置,您可以在每个项目的 . 或 .yml 文件中设置特定于项目的属性。