专业的编程技术博客社区

网站首页 > 博客文章 正文

Spring Boot中更改默认端口的方法

baijin 2024-09-15 14:47:51 博客文章 4 ℃ 0 评论

1. 概述

Spring Boot为许多配置属性提供了合理的默认值。但我们有时需要使用特定于案例的值自定义这些值。一个常见的用例是更改嵌入式服务器的默认端口在本文中,我们将介绍实现此目的的几种方法。

2. 使用属性文件

自定义 Spring 引导的最快和最简单的方法是覆盖默认属性的值。对于服务器端口,我们要更改的属性是 server.port

默认情况下,嵌入式服务器在端口 8080 上启动。那么,让我们看看如何在 application.properties 文件中提供不同的值:

server.port=8081

现在,服务器将在端口 8081 上启动。

如果我们使用 application.yml 文件,我们可以做同样的事情:

server:
  port : 8081

如果将这两个文件放在 Maven 应用程序的 src/main/resources 目录中,则 Spring Boot 会自动加载这两个文件。

2.1. 特定于环境的端口

如果我们在不同的环境中部署了一个应用程序,我们可能希望它在每个系统上的不同端口上运行。

我们可以通过将属性文件方法与 Spring 配置文件相结合来轻松实现这一点。具体来说,我们可以为每个环境创建一个属性文件。

例如,我们将有一个包含以下内容的application-dev.properties文件:

server.port=8081

然后,我们将添加另一个具有不同端口的 application-stg.properties 文件:

server.port=8082

现在,属性文件配置应该足以满足大多数情况。但是,此目标还有其他选择,因此让我们也探索它们。

3. 程序化配置

我们可以通过在启动应用程序时设置特定属性或自定义嵌入式服务器配置来以编程方式配置端口。

首先,让我们看看如何在启动类@SpringBootApplication中设置属性:

@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);
    }
}

接下来,要自定义嵌入式服务器配置,我们必须实现 WebServerFactoryCustomizer 接口:

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

请注意,这适用于 Spring Boot 2.x 版本。对于 Spring Boot 1.x,我们同样可以实现 EmbeddedServletContainerCustomizer 接口。

4. 使用命令行参数

当将我们的应用程序打包并作为 jar 运行时,我们可以使用 java 命令设置 server.port 参数:

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

或使用等效语法:

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

5. 评估顺序

最后,让我们看一下 Spring Boot 评估这些方法的顺序。

基本上,配置优先级为:

  • 嵌入式服务器配置
  • 命令行参数
  • 属性文件
  • 启动类@SpringBootApplication配置

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表