How to Change the Default Port in Spring Boot

1. Overview

Spring Boot provides sensible defaults for many configuration properties. But we sometimes need to customize these with our case-specific values.

And a common use case is changing the default port for the embedded server.

In this quick tutorial, we’ll cover several ways to achieve this.

2. Using Property Files

The fastest and easiest way to customize Spring Boot is by overriding the values of the default properties.

For the server port, the property we want to change is server.port.

By default, the embedded server starts on port 8080.

So, let’s see how to provide a different value in an application.properties file:

server.port=8081

Now the server will start on port 8081.

And we can do the same if we’re using an application.yml file:

server:
  port : 8081

Both files are loaded automatically by Spring Boot if placed in the src/main/resources directory of a Maven application.

2.1. Environment-Specific Ports

If we have an application deployed in different environments, we may want it to run on different ports on each system.

We can easily achieve this by combining the property files approach with Spring profiles. Specifically, we can create a property file for each environment.

For example, we’ll have an application-dev.properties file with this content:

server.port=8081

Then we’ll add another application-qa.properties file with a different port:

server.port=8082

Now, the property files configuration should be sufficient for most cases. However, there are other options for this goal, so let’s explore them as well.

3. Programmatic Configuration

We can configure the port programmatically either by setting the specific property when starting the application or by customizing the embedded server configuration.

First, let’s see how to set the property in the main @SpringBootApplication class:

@SpringBootApplication
public class CustomApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(CustomApplication.class);
        app.setDefaultProperties(Collections
          .singletonMap("server.port", "8083"));
        app.run(args);
    }
}

Next, to customize the server configuration, we have to implement the WebServerFactoryCustomizer interface:

@Component
public class ServerPortCustomizer 
  implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
 
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

Note that this applies to the Spring Boot 2.x version.

For Spring Boot 1.x, we can similarly implement the EmbeddedServletContainerCustomizer interface.

4. Using Command-Line Arguments

When packaging and running our application as a jar, we can set the server.port argument with the java command:

java -jar spring-5.jar --server.port=8083

or by using the equivalent syntax:

java -jar -Dserver.port=8083 spring-5.jar

5. Order of Evaluation

As a final note, let’s look at the order in which these approaches are evaluated by Spring Boot.

Basically, the configurations priority is

  • embedded server configuration
  • command-line arguments
  • property files
  • main @SpringBootApplication configuration

6. Conclusion

In this article, we saw how to configure the server port in a Spring Boot application.

As always, the source code for the examples is available over on GitHub.

Related posts:

Lập trình đa luồng với Callable và Future trong Java
Spring MVC + Thymeleaf 3.0: New Features
Using Custom Banners in Spring Boot
Spring @RequestParam Annotation
Tổng quan về ngôn ngữ lập trình java
Java Program to Optimize Wire Length in Electrical Circuit
Spring Cloud AWS – EC2
Query Entities by Dates and Times with Spring Data JPA
TreeSet và sử dụng Comparable, Comparator trong java
Using JWT with Spring Security OAuth (legacy stack)
An Intro to Spring Cloud Security
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Check Cycle in a Graph using Graph traversal
A Guide to the Java ExecutorService
Getting Started with Custom Deserialization in Jackson
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Returning Custom Status Codes from Spring Controllers
Spring Boot - Sending Email
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Spring Data JPA @Query
The Spring @Controller and @RestController Annotations
Spring Data MongoDB Transactions
Java Program to Check if a Matrix is Invertible
Versioning a REST API
Build a REST API with Spring and Java Config
A Guide to BitSet in Java
Spring Boot - File Handling
Java Program to Find Nearest Neighbor for Static Data Set
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Guide to the Synchronized Keyword in Java