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

新手上路,请多包涵

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

原文由 Paul Verest 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 524
2 个回答

As said in docs either set server.port as system property using command line option to jvm -Dserver.port=8090 or add application.properties in /src/main/resources/ with

 server.port=8090

对于随机端口使用:

 server.port=0

同样在 application.yml /src/main/resources/

 server:
  port: 8090

原文由 Paul Verest 发布,翻译遵循 CC BY-SA 4.0 许可协议

包括服务器端口在内的许多参数可以通过多种方式进行更改。但是,有一个优先顺序,如下所述:

  1. 第一优先级分配给自定义代码,如下所示:

@Component public class CustomConfiguration implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactory factory) { factory.setPort(9090); } }

在这里,我们将服务器端口设置为 9090,这在代码中是硬编码的。为了避免硬编码,我们可以在 bean 类中使用 @Value 注释从环境中分配一个值,并在此处使用它。

  1. 第二优先级分配给命令行参数,如下所示:

    java -jar 目标/spring-boot-0.0.1-SNAPSHOT.jar –server.port=8092

这里我们告诉服务器从 8092 开始监听。注意如果我们同时使用上述两种方法,它将忽略命令行参数,因为自定义代码具有第一优先级。

  1. 第三优先级分配给操作系统环境变量。如果以上两种方法都没有采用,Spring 将从环境属性中获取服务器端口。如果在 Kubernetes 上部署,将使用 Deployment yaml 中 env 部分下设置的属性。

  2. 第四优先级分配给配置文件特定的 application.properties 文件。

  3. 第五优先级分配给 application.properties 文件中分配的值(默认情况下,Spring Boot 尝试查找 src/main/resources/config,如果未找到,则尝试在 src/main/resources 下查找)。

最易于管理和有用的方法可以是第一种和第三种方法的组合。您可以使用环境属性并使用该自定义代码。

示例代码:

` import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class EnvironmentCustomizer { @Value(”${server.port}“) private int serverPort; public void setServerPort(int serverPort) { this.serverPort = serverPort; } public int getServerPort() { return serverPort; } }

@Configuration public class CustomConfiguration { @Autowired EnvironmentCustomizer envCustomizer; @Bean WebServerFactoryCustomizer webServerPortCustomizer() { return factory -> factory.setPort(envCustomizer.getServerPort()); } } `

原文由 Soumen Ghosh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题