19. 运行应用程序
将应用打包成jar,并使用内嵌HTTP服务器的一个最大好处是,你可以像其他方式那样运行你的应用程序。调试Spring Boot应用也很简单,你都不需要任何特殊IDE插件或扩展!
注:本章节只覆盖基于jar的打包,如果选择将应用打包成war文件,你最好参考相关的服务器和IDE文档。
19.1. 从IDE中运行
你可以从IDE中运行Spring Boot应用,就像一个简单的Java应用,但首先需要导入项目。导入步骤取决于你的IDE和构建系统,大多数IDEs能够直接导入Maven项目,例如Eclipse用户可以选择File
菜单的Import…
--> Existing Maven Projects
。
如果不能直接将项目导入IDE,你可以使用构建系统生成IDE的元数据。Maven有针对Eclipse和IDEA的插件;Gradle为各种IDEs提供插件。
注 如果意外地多次运行一个web应用,你将看到一个"端口已被占用"的错误。STS用户可以使用Relaunch
而不是Run
按钮,以确保任何存在的实例是关闭的。
19.2. 作为一个打包后的应用运行
如果使用Spring Boot Maven或Gradle插件创建一个可执行jar,你可以使用java -jar
运行应用。例如:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
Spring Boot支持以远程调试模式运行一个打包的应用,下面的命令可以为应用关联一个调试器:
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar target/myproject-0.0.1-SNAPSHOT.jar
19.3. 使用Maven插件运行
Spring Boot Maven插件包含一个run
目标,可用来快速编译和运行应用程序,并且跟在IDE运行一样支持热加载。
$ mvn spring-boot:run
你可以使用一些有用的操作系统环境变量:
$ export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M
19.5. 热交换
由于Spring Boot应用只是普通的Java应用,所以JVM热交换(hot-swapping)也能开箱即用。不过JVM热交换能替换的字节码有限制,想要更彻底的解决方案可以使用Spring Loaded项目或JRebel。spring-boot-devtools
模块也支持应用快速重启(restart)。
详情参考下面的Chapter 20, Developer tools和“How-to”章节。