将应用程序打包为jar并使用嵌入式HTTP服务器的最大优势之一,是您可以像运行其他应用程序一样运行你的应用程序。该示例适用于调试Spring Boot应用程序。您不需要任何特殊的IDE插件或扩展。
本节仅介绍基于jar的打包。如果选择将应用程序打包为war文件,则应参考服务器和IDE文档。
7.1 从IDE运行
您可以将Spring Boot应用程序当做作为Java应用程序从IDE运行。但是,您首先需要导入您的项目。导入步骤因您的IDE和构建系统而异。大多数IDE可以直接导入Maven项目。例如,Eclipse用户可以在File
菜单中选择Import…
→ Existing Maven Projects
。
如果您不能直接将项目导入IDE,则可以使用构建插件生成IDE元数据。Maven包括对Eclipse和IDEA的插件,Gradle提供了用于各种IDE的插件。
如果不小心两次运行Web应用程序,则会看到“端口已在使用中(Port already in use)”错误。STS用户可以使用
Relaunch
按钮(而不是使用Run
按钮)来确保关闭任何现有实例。
7.2 运行打包的应用程序
如果您使用Spring Boot的Maven或Gradle插件来创建可执行jar,则可以使用java -jar
来运行您的应用程序,如以下示例所示:
$ java -jar target/myapplication-0.0.1-SNAPSHOT.jar
也可以在启用了远程调试支持的情况下运行打包的应用程序,这样做使您可以将调试器附加到打包的应用程序,如以下示例所示:
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/myapplication-0.0.1-SNAPSHOT.jar
7.3 使用Maven插件
Spring Boot的Maven插件包含一个run
目标,可用于快速编译和运行您的应用程序。应用程序以爆炸形式(exploded form)运行,就像在IDE中一样。以下示例显示了运行Spring Boot应用程序的典型Maven命令:
$ mvn spring-boot:run
您可能还想使用MAVEN_OPTS
操作系统环境变量,如以下示例所示:
$ export MAVEN_OPTS=-Xmx1024m
7.4 使用Gradle插件
Spring Boot的Gradle插件同样还包含一个bootRun
任务,可用于以爆炸形式(exploded form)运行您的应用程序。每当您应用org.springframework.boot
和java
插件时,都会添加bootRun
任务,并在如同以下示例中显示:
$ gradle bootRun
您可能还想使用JAVA_OPTS
操作系统环境变量,如以下示例所示:
$ export JAVA_OPTS=-Xmx1024m
7.5 热插拔(Hot Swapping)
由于Spring Boot应用程序是普通的Java应用程序,因此JVM热插拔(Hot Swapping,有时被翻译成:热替换、热交换、热插拔)应该可以立即使用。JVM热插拔在一定程度上受到它可以替换的字节码的限制。对于更完整的解决方案,可以使用JRebel。spring-boot-devtools
模块还提供了对应用程序快速重启的支持。有关详细信息,请参见本章后面的“开发人员工具”部分和热插拔“操作方法”。