协慌网

登录 贡献 社区

如何为 Spring Boot 应用程序配置端口

如何配置 Spring Boot 应用程序侦听的 TCP / IP 端口,因此它不使用默认端口 8080。

答案

文档中所述,可以使用 jvm -Dserver.port=8090命令行选项将server.port设置为系统属性,或者在/src/main/resources/添加application.properties

server.port=8090

对于随机端口使用

server.port=0

在 Spring Boot 应用程序中,有两种主要方法可以更改嵌入式 Tomcat 中的端口。

修改 application.properties

首先,您可以尝试 / resources 文件夹中的 application.properties 文件:

server.port = 8090

application.properties文件

修改虚拟机选项

第二种方法,如果要避免修改任何文件并检入仅在本地需要的文件,则可以使用 vm arg:

转到运行 -> 编辑配置 -> VM 选项

-Dserver.port=8090

使用vm arg更改端口

此外,如果您需要更多信息,则可以在此处查看以下博客文章: 更改 Spring Boot 应用程序上的端口

由于 Spring Boot 提供了各种配置外部化机制 (通过各种PropertySource实现和 / 或按顺序连接到Environment对象的处理器),因此您可以通过以下方法在 jar 存档之外设置任何属性:

  1. 通过命令行参数将属性作为应用程序参数传递

    java -jar <path/to/my/jar> --server.port=7788
  2. SPRING_APPLICATION_JSON (Spring Boot 1.3.0+)中的属性

    • 在 U * IX shell 中定义环境变量:

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
    • 通过使用 Java 系统属性:

      java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>
    • 通过命令行参数传递:

      java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'
  3. 定义JVM 系统属性

    java -Dserver.port=7788 -jar <path/to/my/jar>
  4. 定义操作系统环境变量

    • U * IX 外壳

      SERVER_PORT=7788 java -jar <path/to/my/jar>
    • 视窗

      SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
  5. 将属性放在./config/application.properties 配置文件中

    server.port=7788

    并运行:

    java -jar <path/to/my/jar>
  6. 将属性放在./config/application.yaml

    server:
        port: 7788

    并运行:

    java -jar <path/to/my/jar>
  7. 将属性放在./application.properties

    server.port=7788

    并运行:

    java -jar <path/to/my/jar>
  8. 将属性放在./application.yaml

    server:
        port: 7788

    并运行:

    java -jar <path/to/my/jar>

您可以将上述方法全部组合在一起,列表中的前一种配置优先于后一种。

例如:

SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788

服务器将启动并在端口 7788 上侦听。

这在提供较低优先级的 PropertySources 中的默认属性(通常打包在归档文件中或在源代码中),然后在运行时环境中覆盖它时非常有用。这是 Spring Boot 的设计理念:

开箱即用,但是随着需求开始偏离默认值,很快就会摆脱困境。


SERVER_NAMEserver.name转换是通过Relaxed Binding完成的。