19. Running your application

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.

19.1 Running from an IDE

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 Relaunch button rather than Run to ensure that
any existing instance is closed.

19.2 Running as a packaged application

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:

19.3 Using the Maven plugin

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 just like in your IDE.

$ mvn spring-boot:run

You might also want to use the useful operating system environment variable:

$ export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M

19.4 Using the Gradle plugin

The Spring Boot Gradle plugin also includes a bootRun task which can be used to run
your application in an exploded form. The bootRun task is added whenever you import
the spring-boot-gradle-plugin:

$ gradle bootRun

You might also want to use this useful operating system environment variable:

$ export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M

19.5 Hot swapping

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.