How to Change the Context Path in Spring Boot

author : Sai K

The context path is the prefix of the URL path that routes requests to the appropriate controller in a Spring Boot

application. By default, the context path is set to /, which means that the application will handle requests from

the root context. However, you may need to change the context path for various reasons, such as deploying

multiple applications on the same server. This tutorial will guide you through different methods to change the

context path in a Spring Boot application.


Prerequisites

  • JDK 17 or later

  • Maven or Gradle

  • IDE (IntelliJ IDEA, Eclipse, etc.)

Method 1: Using application.properties

The simplest way to change the context path is by setting the server.servlet.context-path property in the

application.properties file.

Step 1: Set Up a Spring Boot Project

Use Spring Initializr to create a new project with the following dependencies:

  • Spring Web

  • Download and unzip the project, then open it in your IDE.

    Step 2: Configure application.properties

    Set up the application properties to change the context path. This file is located in the src/main/resources

    directory.


    
    # src/main/resources/application.properties
    
    # Server context path configuration
    server.servlet.context-path=/myapp
    

    Explanation:

    • server.servlet.context-path=/myapp: Changes the context path from the default / to /myapp.

    Method 2: Using application.yml

    You can also change the context path using the application.yml file.

    Step 1: Set Up a Spring Boot Project

    Use Spring Initializr to create a new project with the following dependencies:

  • Spring Web
  • Download and unzip the project, then open it in your IDE.

    Step 2: Configure application.yml

    Set up the application YAML configuration to change the context path. This file is located in the

    src/main/resources directory.

    
    # src/main/resources/application.yml
    
    server:
      servlet:
        context-path: /myapp
        

    Explanation:

    • The above property changes the context path from the default / to /myapp.

    Method 3: Using Command Line Arguments

    You can override the context path by passing a command line argument when starting the application.

    Step 1: Run the Application with a Command Line Argument

    Use the following command to run the Spring Boot application with a different context path:

    
    ./mvnw spring-boot:run -Dspring-boot.run.arguments=--server.servlet.context-path=/myapp
    

    Explanation:

    • -Dspring-boot.run.arguments=--server.servlet.context-path=/myapp: Specifies the context path as a

      command line argument.

    Method 4: Programmatically Setting the Context Path

    You can programmatically set the context path by configuring a ConfigurableServletWebServerFactory bean.

    Step 1: Create a Configuration Class

    Create a new configuration class to set the context path programmatically.

    
    package com.example.demo.config;
    
    import org.springframework.boot.web.server.ConfigurableWebServerFactory;
    import org.springframework.boot.web.server.WebServerFactoryCustomizer;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class WebServerConfig {
    
        @Bean
        public WebServerFactoryCustomizer webServerFactoryCustomizer() {
            return factory -> factory.setContextPath("/myapp");
        }
    }
    

    Explanation:

    • WebServerFactoryCustomizer: Customizes the web server factory to set the context path.

    • factory.setContextPath("/myapp"): Sets the context path to /myapp.

    Method 5: Using Environment Variables

    You can use environment variables to set the context path.

    Step 1: Set the Environment Variable

    Set the SERVER_SERVLET_CONTEXT_PATH environment variable before running the application.

    For Unix-based systems (Linux, macOS):

    
    export SERVER_SERVLET_CONTEXT_PATH=/myapp
    ./mvnw spring-boot:run
    

    For Windows:

    
    set SERVER_SERVLET_CONTEXT_PATH=/myapp
    ./mvnw spring-boot:run
    

    Explanation:

    • SERVER_SERVLET_CONTEXT_PATH=/myapp: Sets the environment variable for the context path to

      /myapp.

    Step 3: Create a Simple Controller

    Create the HelloController

    Create a controller to handle incoming requests.

    
    package com.example.demo.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @GetMapping("/hello")
        public String hello() {
            return "Hello, World!";
        }
    }
    

    Explanation:

    • @RestController: Marks the class as a REST controller.

    • @GetMapping("/hello"): Maps GET requests to the /hello endpoint.

    Step 4: Running and Testing the Application

    4.1 Run the Application

    Run the Spring Boot application using your IDE or the command line:

    
    ./mvnw spring-boot:run
    

    4.2 Test the Context Path Change

    Use a web browser or a tool like Postman to test the new context path. Navigate to

    http://localhost:8080/myapp/hello to see the "Hello, World!" message.

    Conclusion

    In this tutorial, you have learned different methods to change the context path in a Spring Boot application. The

    methods include:


    • Using application.properties

    • Using application.yml

    • Using command line arguments

    • Programmatically setting the context path

    • Using environment variables

    By following these steps, you can effectively change the context path of your Spring Boot application to suit your

    needs.

    Related Spring and Spring Boot Tutorials/Guides: