19、运行您的应用

将应用程序打包成 jar 可执行文件并使用嵌入式 HTTP 服务器的最大有点之一就是可以按照您想使用的其它方式来运行应用。调试 Spring Boot 也是很简单,您不需要任何特殊的 IDE 插件或者扩展。

注意

本章节仅涵盖基于 jar 的打包方式,如果您选择将应用打包为 war 文件,则应该参考您的服务器和 IDE 文档。

19.1、使用 IDE 运行

您可以使用 IDE 运行 Spring Boot应用,就像运行一个简单的 Java 应用程序一样,但是首先您需要导入项目,导入步骤取决于您的 IDE 和构建系统。大多数 IDE 可以直接导入 Maven 项目,例如 Eclipse 用户可以从 File 菜单中选择 Import ​ → Existing Maven Projects

如果您无法将项目直接导入到 IDE 中,则可以使用构建插件生成 IDE 元数据(metadata)。Maven 包含了 EclipseIDEA 的插件,Gradle 也为各种 IDE 提供了插件。

提示

如果您不小心运行了两次 web 应用,您将看到一个 Port already in use (端口已经被使用)错误。STS 用户可以使用 Relaunch 按钮运行以确保现有的任何实例都已关闭,而不是使用 Run 按钮。

19.2、作为打包应用运行

如果您使用 Spring Boot Maven 或者 Gradle 插件创建可执行 jar,可以使用 java -jar 命令运行应用。例如:

  1. $ java -jar target/myapplication-0.0.1-SNAPSHOT.jar

也可以在运行打包应用程序时开启远程调试支持。该功能允许您将调试器附加到打包的应用中。

  1. $ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
  2. -jar target/myapplication-0.0.1-SNAPSHOT.jar

19.3、使用 Maven 插件

Spring Boot Maven 插件包含一个可用于快速编译和运行应用程序的 run goal。应用程序以快速形式运行,就像在 IDE 中一样。以下示例展示了运行 Spring Boot 应用程序的典型 Maven 命令:

  1. $ mvn spring-boot:run

您可能还想使用 MAVEN_OPTS 操作系统环境变量,如下例所示:

  1. $ export MAVEN_OPTS=-Xmx1024m

19.4、使用 Gradle 插件

Spring Boot Gradle 插件包含一个 bootRun 任务,可用于以快速形式运行应用程序。每当应用 org.springframework.boot 和 java 插件时都会添加 bootRun 任务:

  1. $ gradle bootRun

您可能还想使用 JAVA_OPTS 操作系统环境变量:

  1. $ export JAVA_OPTS=-Xmx1024m

19.5、热交换

由于 Spring Boot 应用程序只是普通的 Java 应用程序,因此 JVM 热插拔是可以开箱即用。JVM 热插拔在可替换字节码方面有所限制。想要更完整的解决方案,可以使用 JRebel

spring-boot-devtools 模块包含了对快速重新启动应用程序的支持。有关详细信息,请参阅本章后面的第 20 章:开发人员工具部分以及热插拔的 How-to 部分