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

1059

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


12
如果有人感兴趣,这里展示了如何有多个端口-https://dev59.com/GVoV5IYBdhLWcg3wXNs9 - Betlista
如果您使用“yml”文件进行配置,则可以使用以下内容: server: port: 8081 同时,将您的主类注释为“@SpringBootApplication”,并删除“@EnableAutoConfiguration”。 - Keaz
你的项目[application.properties]中添加以下内容: server.port=8080 - Lahiru Samishka
在应用程序属性中设置server.port=8080。此配置位于org.springframework.boot.autoconfigure.web下的ServerProperties.class类中。 - Atif
64个回答

1
这对我很有帮助:
添加自定义容器类:
@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
       configurableEmbeddedServletContainer.setPort(8888);
    }

}

但是这仍然没有使用8888端口。
然后我在我的主方法上的"@SpringBootApplication"类中设置了"scanBasePackages"属性,像这样:(scanBasePackages = {"自定义容器包"})
@SpringBootApplication(scanBasePackages = {"com.javabrains.util"})
public class CourseApiApp {

    public static void main (String args []) {
        SpringApplication.run(CourseApiApp.class, args);
    }
}

并且它开始捕获在自定义容器中设置的端口。

1
在Spring Boot中,您可以轻松地在application.properties文件中配置服务的端口。
server.port=portnumber

如果您没有特别设置端口,则会尝试使用端口 80 打开服务。如果该端口已被占用,则服务将不会在嵌入式容器上启动。

1

除了在application.properties中添加端口,您还可以通过将属性文件方法与Spring配置文件相结合,轻松实现不同环境的多个端口。具体来说,我们可以为每个环境创建一个属性文件。

例如,我们将拥有一个名为application-dev.properties的属性文件,其内容如下:

server.port=8081

然后你可以添加另一个application-qa.properties文件,使用不同的端口:

server.port=8082

1
在application.properties文件中添加以下内容: server.port=8888 这里始终需要提到端口。

1

server.port = 0 表示随机端口。

server.port = 8080 表示使用自定义的 8080 端口。


1
如果你的端口号可以随机生成,你可以在你的application.properties文件中使用随机函数:server.port=${random.int(4)}。请注意,这个函数将会生成一个介于0到3之间的随机整数作为端口号。

我想不出任何场景,你会想要随机端口号。 - Sudip Bhandari

0

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

  1. 首要优先级分配给以下自定义代码:
@Component public class CustomConfiguration implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactory factory) { factory.setPort(9090); } }

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

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

    java -jar target/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<ConfigurableServletWebServerFactory> webServerPortCustomizer() {
    return factory -> factory.setPort(envCustomizer.getServerPort());
    }
}

0
只需打开application.properties文件并提供自定义端口名称,例如server.port=8081。

0

使用application.properties:

如果尚不存在,请在Spring Boot项目的src/main/resources目录中创建或打开application.properties文件。

添加以下行以指定所需的端口(例如,8080):

server.port=8080

将8080替换为您想要使用的端口号。
保存application.properties文件并启动应用程序。enter image description here

0
如果您使用Spring命令行界面(CLI),请使用--将命令与spring命令参数分开,以更改端口: spring run hello.groovy -- --server.port=9000 spring-boot cli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接