One of the biggest advantages of packaging your application as jar and using an embedded HTTP server is that you can run your application as you would any other. Debugging Spring Boot applications is also easy; you don’t need any special IDE plugins or extensions.
Note | |
---|---|
This section only covers jar based packaging, If you choose to package your application as a war file you should refer to your server and IDE documentation. |
You can run a Spring Boot application from your IDE as a simple Java application, however,
first you will need to import your project. Import steps will vary depending on your IDE
and build system. Most IDEs can import Maven projects directly, for example Eclipse users
can select Import…
→ Existing Maven Projects
from the File
menu.
If you can’t directly import your project into your IDE, you may be able to generate IDE metadata using a build plugin. Maven includes plugins for Eclipse and IDEA; Gradle offers plugins for various IDEs.
Tip | |
---|---|
If you accidentally run a web application twice you will see a “Port already in
use” error. STS users can use the |
If you use the Spring Boot Maven or Gradle plugins to create an executable jar you can
run your application using java -jar
. For example:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
It is also possible to run a packaged application with remote debugging support enabled. This allows you to attach a debugger to your packaged application:
$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \ -jar target/myproject-0.0.1-SNAPSHOT.jar
The Spring Boot Maven plugin includes a run
goal which can be used to quickly compile
and run your application. Applications run in an exploded form, and you can edit
resources for instant “hot” reload.
$ mvn spring-boot:run
You might also want to use the useful operating system environment variable:
$ export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M -Djava.security.egd=file:/dev/./urandom
(The “egd” setting is to speed up Tomcat startup by giving it a faster source of entropy for session keys.)
The Spring Boot Gradle plugin also includes a run
goal which can be used to run
your application in an exploded form. The bootRun
task is added whenever you import
the spring-boot-plugin
$ gradle bootRun
You might also want to use this useful operating system environment variable:
$ export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M -Djava.security.egd=file:/dev/./urandom
Since Spring Boot applications are just plain Java applications, JVM hot-swapping should
work out of the box. JVM hot swapping is somewhat limited with the bytecode that it can
replace, for a more complete solution
JRebel or the
Spring Loaded project can be used. The
spring-boot-devtools
module also includes support for quick application restarts.
See the Chapter 20, Developer tools section below and the Hot swapping “How-to” for details.