如何为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个回答

21

如果您正在使用 Gradle 作为构建工具,可以在您的 application.yml 文件中设置服务器端口:

server:
  port: 8291

如果您正在使用Maven,则可以在您的 application.properties 文件中设置端口,如下所示:
server.port: 8291

对于 application.properties 文件,其 server.port = 8291 - iQuestProgrammer
Maven和Gradle与您使用属性文件或YAML文件有什么关系?构建过程(Maven)与应用程序框架(Spring Boot)完全不同。 - SeverityOne

20

补充其他答案:

文档中有一节关于测试,解释了如何配置集成测试的端口:


在集成测试中,端口配置是使用注解@SpringBootTestwebEnvironment值进行的。


随机端口:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

你可以使用@LocalServerPort注入值,这与@Value("${local.server.port}")相同。

  • 示例:

随机端口测试配置:

@RunWith(SpringRunner.class
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ExampleTest {
   ...
   @LocalServerPort //to inject port value
   int port;
}

定义端口:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

如果定义了server.port,则使用该值。

  • 如果使用@TestPropertySource(properties = "server.port=9192")定义了端口,则覆盖其他已定义的值。
  • 如果没有定义,则使用src/test/resources/application.properties中的值(如果存在)。
  • 最后,如果都没有定义,则使用默认的8080端口。

示例:

已定义端口的测试配置:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource(properties = "server.port=9192")
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}

19

根据使用的应用程序配置文件类型,有三种方法可以实现:

a)如果您正在使用 application.properties 文件,请设置如下内容:

server.port = 8090

b)如果您正在使用 application.yml 文件,请按以下 YAML 格式设置服务器端口属性:

server:
     port: 8090

c) 您还可以在主方法中将该属性设置为系统属性。

System.setProperty("server.port","8090");

19
您可以通过覆盖配置中的EmbeddedServletContainerFactory bean 来指定端口(无论是基于Java还是XML的配置)。在那里,您可以为使用的嵌入式servlet容器指定端口。请参见Spring Boot - Core 中的“嵌入式Servlet容器支持”段落和示例。希望这有所帮助。

1
直接链接:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-tomcat - Erik Martino
这是一个当前的程序化覆盖部分链接:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-customizing-embedded-containers - jocull

19

在位于资源中的application.properties文件中:

server.port=8082

15

15

请将以下内容添加到您的application.properties文件中:

server.port= 8080

2
欢迎来到 SO :-) 请查看 [答案] - JimHawkins
为什么要在一年后添加相同的答案?!?而且server.port 8080是Java属性文件的错误语法... - Betlista

14

默认情况下,Spring Boot 应用使用嵌入的Tomcat服务器启动,默认端口为8080。Spring 提供了以下不同的自定义选项,您可以选择其中一个。

注意 - 您可以使用server.port=0,Spring Boot 将为我们寻找任何未分配的随机HTTP端口。

1)application.properties

server.port=2020

2) application.yml

->

2)应用程序配置文件:application.yml

server:  
     port : 2020

3) 编程方式更改服务器端口

3.1) 通过实现WebServerFactoryCustomizer接口 - Spring 2.x

@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        // customize the factory here
        factory.setPort(2020);
    }
}

3.2) 通过实现EmbeddedServletContainerCustomizer接口 - Spring 1.x

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        // customize here
        container.setPort(2020);
    }
}

4) 通过使用命令行选项

 java -jar spring-boot-app.jar -Dserver.port=2020

14
  1. 众所周知,你可以在application.properties中指定
    server.port = 9000 (可以是任何其他值)

  2. 如果您的项目中使用了Spring Actuator,默认情况下它指向
    8080,并且如果您想要更改它,则需要在application.properties中提及
    management.port = 9001 (可以是任何其他值)


14
application.properties文件中添加以下行:server.port = 65535 要将该文件放在哪里:
  

24.3应用程序属性文件

     

SpringApplication从以下位置的application.properties文件加载属性,并将它们添加到Spring环境中:

A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root

该列表按优先级排序(在较高的位置定义的属性会覆盖在较低位置定义的属性)。

在我的情况下,我将其放在jar文件所在的目录中。

来源:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files


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