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

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

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

 server.port = 8090 

用于随机端口使用

 server.port=0 

在Spring Boot Application中,有两种主要方法可以更改Embedded Tomcat中的端口。

修改application.properties

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

application.properties文件

修改VM选项

第二种方法,如果你想避免修改任何文件并检查你在本地只需要的东西,你可以使用vm arg:

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

 -Dserver.port=8090 

使用vm arg更改端口

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

此外,您可以以编程方式配置端口

 @Configuration public class ServletConfig { @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { container.setPort(8012); }); } } 

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

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

     java -jar  --server.port=7788 
  2. 来自SPRING_APPLICATION_JSON (Spring Boot 1.3.0+)的属性

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

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

       java -Dspring.application.json='{"server.port":7788}' -jar  
    • 通过命令行参数:

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

     java -Dserver.port=7788 -jar  
  4. 定义OS环境变量

    • U * IX Shell

       SERVER_PORT=7788 java -jar  
    • 视窗

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

     server.port=7788 

    并运行:

      java -jar  
  6. 将属性放在./config/application.yaml

     server: port: 7788 

    并运行:

      java -jar  
  7. 将属性放在./application.properties

     server.port=7788 

    并运行:

      java -jar  
  8. 将属性放在./application.yaml

     server: port: 7788 

    并运行:

      java -jar  

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

例如:

 SERVER_PORT=2266 java -Dserver.port=5566 -jar  --server.port=7788 

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

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

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


SERVER_NAMEserver.name转换由Relaxed Binding完成。

您可以在java代码中设置端口:

 HashMap props = new HashMap<>(); props.put("server.port", 9999); new SpringApplicationBuilder() .sources(SampleController.class) .properties(props) .run(args); 

或者在application.yml中:

 server: port: 9999 

或者在application.properties中:

 server.port=9999 

或者作为命令行参数:

 -Dserver.port=9999 

如果您使用的是application.yml请将以下行添加到其中

 server: port: 9000 

当然0为随机端口。

如Spring文档中所述 ,有几种方法可以做到这一点:

您在命令行中设置端口(例如8888)

-Dserver.port=8888--server.port=8888

示例: java -jar -Dserver.port=8888 test.jar

或者在application.properties中设置端口

 server.port=${port:4588} 

或(在application.yml中使用yaml语法)

 server: port: ${port:4588} 

如果在命令行中设置-Dport(或-Dserver.port)传递的端口,则将考虑此端口。 如果没有,则默认端口为4588。

如果要在属性文件中强制执行任何环境变量的端口,则只需编写:

 server.port=8888 

如果您想在本地运行它,请使用此 –

mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'

Spring Boot 2.0开始 ,这是有效的命令(线索在这里 ):

 mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085 

application.properties包含以下属性

 server.port=8080 

当您需要以编程方式执行此操作时,可以在启动期间进行设置:

 System.getProperties().put( "server.port", 80 ); SpringApplication.run(App.class, args); 

这可能有助于环境相关的端口。 祝你今天愉快

您可以通过在配置中覆盖EmbeddedServletContainerFactory bean来指定端口(基于java或xml)。 在那里,您可以为使用的嵌入式servlet容器指定端口。 请参阅Spring Boot – Core “嵌入式Servlet容器支持”一节和示例。 希望这可以帮助。

扩展其他答案:

测试文档中有一节介绍如何在集成测试中配置端口:

  • 41.3测试Spring Boot应用程序
  • 41.3.3使用随机端口

在集成测试中,使用注释@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() { } } 

在资源中存在的application.properties文件中:

 server.port=8082 

当Spring启动应用程序启动时,Tomcat等嵌入式服务器以默认端口启动。 嵌入式tomcat默认以8080端口启动。 有许多方法可以更改默认服务器端口。

使用属性文件(.properties / .yml)

要使用属性文件更改服务器端口,我们需要配置server.port属性。

一个。 在类路径中使用application.properties,例如src \ main \ resources \ application.properties

 server.port = 8585 

服务器将以8585端口启动。 要获取随机服务器端口,请为该属性指定0。

 server.port = 0 

现在,spring boot将在系统中任何服务器当前未使用的端口上启动服务器。

湾 在类路径中使用application.yml,例如src \ main \ resources \ application.yml。

 server: port: 8585 

服务器将以8585端口开始。

对于随机端口,分配0。

 server: port: 0 

将java命令与–server.port或-Dserver.port一起使用

假设我们有一个名为my-app.jar的可执行JAR,然后在使用java命令启动spring boot应用程序时,我们可以使用如下参数。

使用–server.port

 java -jar my-app.jar --server.port=8585 

使用-Dserver.port

 java -jar -Dserver.port=8585 my-app.jar 

服务器将以8585端口开始。

使用带有–port或-Dport的java命令

简而言之,我们可以删除server关键字并使其成为任何短关键字,如–port和-Dport。 我们可以使用任何短关键字。 这里我们使用port作为短关键字。 为了实现它,我们需要在属性文件中配置占位符,如下所示。

使用application.properties

 server.port=${port:8282} 

使用application.yml

 server: port: ${port:8282} 

如果我们不将端口作为参数传递,那么默认服务器将以8282开始。如果我们想要一个不同的端口,那么我们需要在参数中传递所需的端口,如下所示。 假设我们有一个名为my-app.jar的可执行JAR。

使用–port

 java -jar my-app.jar --port=8585 

使用-Dport

 java -jar -Dport=8585 my-app.jar 

服务器将以8585端口开始。

以编程方式使用SERVER_PORT和SpringApplication

SpringApplication有一个setDefaultProperties()方法,用于更改spring引导默认属​​性。 假设我们想要更改默认端口,那么我们需要创建一个Map并使用SERVER_PORT键放置一个端口。 找到这个例子。

MyApplication.java

 package com.humoyun; import java.util.HashMap; import java.util.Map; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(MyApplication.class); Map map = new HashMap<>(); map.put("SERVER_PORT", "8585"); application.setDefaultProperties(map); application.run(args); } } 

Spring启动将使用8585端口启动服务器。

通过更改application.properties,您可以在服务器配置中更改许多其他内容。 像会话超时,地址和端口等。请参阅下面的post

参考: http : //docs.spring.io/spring-boot/docs/1.4.x/reference/html/common-application-properties.html

我用了几个,如下所示。

 server.session.timeout=1 server.port = 3029 server.address= deepesh 
  1. 正如大家所说,您可以在application.properties中指定
    server.port = 9000 (可以是任何其他值)

  2. 如果您在项目中使用弹簧执行器,则默认指向
    8080,如果你想改变它,那么在application.properties中提一下
    management.port = 9001 (可以是任何其他值)

实际上,最简单的方法是设置server.port属性。

如果您使用STS作为IDE,从版本3.6.7开始实际上有Spring属性编辑器用于打开属性文件。

此编辑器为所有Spring Boot属性提供自动完成function。 如果您编写端口并按CTRL + SPACE, server.port将是第一个选项。

希望这一个帮助

 application.properties => 

 server.port = 8090

 application.yml => 

服务器
  端口:8090

application.properties文件中添加它

 server.port= 8080 

1.1通过属性文件更新。

/src/main/resources/application.properties

server.port = 8888

通过yaml文件更新。

  server: port: 8888 

EmbeddedServletContainerCustomizer

 @Component public class CustomContainer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8888); } } 

只需在项目的src/main/resources中有一个application.properties

 server.port=**** 

其中****指的是端口号。

使用属性server.port = 8080就像在其他答案中提到的那样绝对是一种方法。 只是想提一下你也可以暴露一个环境属性:

 SERVER_PORT=8080 

由于春季靴子能够取代“。” 对于“_”而言,对于最近版本中的环境变量,将其降低到UPPER大小写。 这在容器中特别有用,您需要做的就是定义该环境变量而不添加/编辑application.properties或通过命令行传递系统属性(即-Dserver.port=$PORT

您可以在以下方法中添加端口。

  1. 运行 – >配置部分

  2. application.xml添加server.port=XXXX

您可以在/ src / main / resources /下的application.properties中进行设置

 server.port = 8090 

由于嵌入式Tomcat,springboot主要在port:8080上运行。 在某些情况下,它可能会抛出一个port 8080 already in use的错误port 8080 already in use 。 为了避免这种问题,我们可以配置服务器端口。

使用application.properties

添加server.port=9898

在运行时配置

用以下参数运行你的应用程序。

spring-boot:run -Drun.jvmArguments='-Dserver.port=8081'

有三种方法可以做到这一点

1在application.properties文件中设置server.port属性

 server.port = 8090 

2在application.yml文件中设置服务器端口属性

 server: port: 8090 

3在main方法中将属性设置为系统属性

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

您还可以使用SERVER_PORT环境变量来配置Spring Boot端口。 只需设置环境变量并重新启动应用程序:

 set SERVER_PORT=9999 // on windows machine export SERVER_PORT=9999 // on linux 

请注意,如果您未在系统范围内设置这些环境变量,则应在同一会话中运行启动应用程序。

默认端口是:8080但我们可以在application.properties中自定义端口号,如下所示

 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp server.port = 5050 -- #here we can give any port number. 

如果你谷歌为Gradle Spring Port,这个问题是第一个结果。

如果您使用gradle,如果已经应用了Spring Boot Gradle Plugin,则可以执行以下操作:

 bootRun { args += ["--server.port=[PORT]"] } 

如需更复杂的答案,请在此处查看我的答案。

如果你正在处理启动项目,并且你想配置端口,你可以在application.properties文件中输入如下注意:属性文件应该在src / main / resource下

spring属性

server.port = 9999如果使用CMD,则按照以下命令-Dserver.port = 9999对于默认端口,其server.port = 0确保没有端口正在使用此端口号