如何配置 Spring Boot 应用程序侦听的 TCP/IP 端口,使其不使用默认端口 8080。
原文由 Paul Verest 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何配置 Spring Boot 应用程序侦听的 TCP/IP 端口,使其不使用默认端口 8080。
原文由 Paul Verest 发布,翻译遵循 CC BY-SA 4.0 许可协议
包括服务器端口在内的许多参数可以通过多种方式进行更改。但是,有一个优先顺序,如下所述:
@Component
public class CustomConfiguration implements WebServerFactoryCustomizer {
@Override
public void customize(ConfigurableServletWebServerFactory factory) {
factory.setPort(9090);
}
}
在这里,我们将服务器端口设置为 9090,这在代码中是硬编码的。为了避免硬编码,我们可以在 bean 类中使用 @Value 注释从环境中分配一个值,并在此处使用它。
第二优先级分配给命令行参数,如下所示:
java -jar 目标/spring-boot-0.0.1-SNAPSHOT.jar –server.port=8092
这里我们告诉服务器从 8092 开始监听。注意如果我们同时使用上述两种方法,它将忽略命令行参数,因为自定义代码具有第一优先级。
第三优先级分配给操作系统环境变量。如果以上两种方法都没有采用,Spring 将从环境属性中获取服务器端口。如果在 Kubernetes 上部署,将使用 Deployment yaml 中 env 部分下设置的属性。
第四优先级分配给配置文件特定的 application.properties 文件。
第五优先级分配给 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
原文由 Soumen Ghosh 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
4 回答14.2k 阅读✓ 已解决
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
As said in docs either set
server.port
as system property using command line option to jvm-Dserver.port=8090
or addapplication.properties
in/src/main/resources/
with对于随机端口使用:
同样在
application.yml
/src/main/resources/