🏠Spring BootChanging Context Path in a Spring Boot Application

Changing Context Path in a Spring Boot Application

By default, Spring boot has “/” as the context path. If you wish to override/change the context path, then you can use one of the following approaches.

In most scenarios, the default context path is all you would want. It gives a clean approach to writing APIs.

The default context path in spring boot

However, there are some cases where you might want to use your application under a different context path. They are,

  • You are migrating from treditional deployment where all web applications had a context path (eg. Standalone tomcat WAR deployments)
  • You want to use same load balancer for different applications with same API paths.
  • Having different versions of the same app. (Apps with APIs starting with /v1, /v2 etc).

In this post, We will explore the ways to change the default context path of a spring boot application.

Using Configuration properties

Spring boot provides an easy way to override the context via the “server.servlet.context-path” property. For example, the below sets the context path to /springhow.

server.servlet.context-path=/springhowCode language: Properties (properties)

And if you are using YAML, then the following is the way to do it.

        context-path: /springhowCode language: YAML (yaml)

Furthermore, Spring boot lets you pass properties through the JVM parameter.

java -Dserver.servlet.context-path=/springhow -jar hello-world-jarCode language: Java (java)

Also, you can pass this configuration as a program parameter.

 java -jar hello-world-jar --server.servlet.context-path=/springhowCode language: Java (java)

Spring Boot also takes OS variables for config. If you wish to use this, then you need to match the environment variable with the name of the config. For windows, you can use the following commands.

java -jar hello-world-jarCode language: JavaScript (javascript)

And for Linux and mac, You need to set the environment variable using the export command.

java -jar hello-world-jar

If you are using the Spring boot 1.X version, then you should use the server.context-path for properties. and SERVER_CONTEXT_PATH for the environment variable.

Programatically changing the context path in Spring Boot

There are a couple of ways to programmatically change the context path. The first and most simple one is to set the “server.servlet.context-path” as a system property.

public class SpringBootDemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(SpringBootDemoApplication.class, args);

}Code language: PHP (php)

The WebServerFactoryCustomizer interface lets you customize the underlying embedded server container. By providing a bean implementation for this interface, You can customize the webserver. In our case, we are overriding the default context path.

WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> webServerFactoryCustomizer() {
  return factory -> {
}Code language: JavaScript (javascript)

You could also change the application port, session behavior, etc using this implementation.

With proper settings, you can see the results in the logs.

Spring boot with custom context path


We learned various ways to change the context path of a spring boot application. Note that the programmatic approach is there to provide a permanent and/or dynamic solution. So always prefer to config if you plan on changing the context path often.


Similar Posts