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
运行一个打包的程序并开启远程调试支持是可能的,这允许你将调试器附加到打包的应用程序上:
$ 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
目标,它可以用来快速编译和运行应用程序。应用程序以一种暴露的方式运行,由于即时"热"加载,你可以编辑资源。
$ mvn spring-boot:run
你可能想使用有用的操作系统环境变量:
$ export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M -Djava.security.egd=file:/dev/./urandom
("egd"设置是通过为Tomcat提供一个更快的会话keys熵源来加速Tomcat的。)
19.4. 使用Gradle插件运行
Spring Boot Gradle插件也包含一个run
目标,它可以用来以暴露的方式运行你的应用程序。不管你什么时候导入spring-boot-plugin
,bootRun
任务总是被添加进去。
$ gradle bootRun
你可能想使用那些有用的操作系统环境变量:
$ export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M -Djava.security.egd=file:/dev/./urandom
19.5. 热交换
由于Spring Boot应用程序只是普通的Java应用,那JVM热交换(hot-swapping)应该能出色的工作。JVM热交换在它能替换的字节码上有些限制,更全面的解决方案可以使用Spring Loaded项目或JRebel。
关于热交换可以参考[“How-to”](…/IX. ‘How-to’ guides/README.md)相应章节。