Spring Boot 启动时如何改变启动端口

在 Java 和 Spring Boot 中,改变应用程序的启动端口是一个相对简单但常见的需求。默认情况下,Spring Boot 应用程序会在端口 8080 上启动,但是在某些情况下,你可能需要更改这个端口,例如:测试多个应用实例、在特定的网络环境中部署应用等。

改变启动端口的方式

在 Spring Boot 中,有多种方式可以改变启动端口。以下是几种常用的方法:

方法一:通过配置文件

最常见的做法是通过 application.propertiesapplication.yml 文件进行配置。在你的 Spring Boot 项目的 src/main/resources 目录下找到这些文件,您可以添加或者修改以下内容:

application.properties
server.port=8081
application.yml
server:
  port: 8081

在上面的示例中,我们将端口更改为 8081。启动应用后,你会发现它在新的端口上运行。

方法二:通过命令行参数

如果你不想修改配置文件,还可以在启动 Spring Boot 应用时通过命令行参数设置端口。例如,在使用 Maven 启动时,可以运行以下命令:

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8082"

对于使用 Gradle 的项目,可以运行:

./gradlew bootRun --args='--server.port=8082'

这样应用将会在 8082 端口上启动。

方法三:在代码中设置

如果你希望在代码中动态设置端口,可以在使用 SpringApplication 启动应用时设置端口。示例如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.ConfigurableEnvironment;

@SpringBootApplication
public class MyApp {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        ConfigurableEnvironment environment = app.run(args).getEnvironment();
        
        String port = environment.getProperty("server.port");
        System.out.println("应用程序正在运行,端口为:" + port);
    }

    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> customizer() {
        return factory -> factory.setPort(8083);
    }
}

在上面代码中,我们通过设置 WebServerFactoryCustomizer 来将端口更改为 8083。

如何验证端口更改

修改好端口之后,我们可以使用 curl 命令或者直接在浏览器中访问 http://localhost:<新端口>/ 来验证。

curl http://localhost:8081

如果应用正常启动,你将会看到响应。

注意事项

  1. 端口冲突:更改端口时,应确保该端口未被其他应用占用。如果端口已被占用,应用将无法启动并会抛出异常。

  2. 访问权限:在某些运行环境下,可能会存在访问权限的问题,如某些低于 1024 的端口可能需要特权用户才能启动。

  3. 环境配置:在不同的环境(如开发环境、测试环境、生产环境)中可能需要使用不同的端口,建议使用不同的配置文件或根据环境变量动态调整。

示例:甘特图

为了直观展示改变启动端口的过程,我们使用 [mermaid]( 可以绘制出一个甘特图:

gantt
    title Spring Boot 启动时改变端口的流程
    dateFormat  YYYY-MM-DD
    section 設定新的端口
    修改 application.properties :a1, 2023-10-01, 1d
    启动应用程序 :a2, after a1, 1d
    验证应用程序 :a3, after a2, 1d
    section 处理异常
    处理端口冲突 :a4, after a2, 1d

此图清晰地展示了改变启动端口的流程。从修改配置文件,到启动程序,再到后续的验证和异常处理。

结论

在 Spring Boot 中,改变启动端口的方法有多种,包括通过配置文件、命令行参数和代码中动态设置等。根据实际需求,选择合适的方式可以轻松地设定端口。在实际使用中,特别要注意端口冲突和访问权限等问题,从而确保应用的顺利运行。

通过以上示例和描述,相信你已经对如何改变 Spring Boot 启动端口有了全面而清晰的认识。希望这篇文章能够帮助到你,让你在日常开发中更加得心应手。