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

时间:2014-01-13 02:59:47

标签: java spring spring-boot server port

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

58 个答案:

答案 0 :(得分:1049)

正如said in docs使用jvm server.port的命令行选项将-Dserver.port=8090设置为系统属性,或者application.properties中添加/src/main/resources/

server.port = 8090

对于随机端口使用

server.port=0

答案 1 :(得分:164)

在Spring Boot应用程序中,有两种主要方法可以更改嵌入式Tomcat中的端口。

修改application.properties

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

server.port = 8090

application.properties file

修改VM选项

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

转到“运行” - >编辑配置 - > VM选项

-Dserver.port=8090

Change port with a vm arg

此外,如果您需要更多信息,可以在此处查看以下博文:Changing the port on a Spring Boot Application

答案 2 :(得分:117)

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

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

    传递
    java -jar <path/to/my/jar> --server.port=7788
    
  2. 来自SPRING_APPLICATION_JSON(Spring Boot 1.3.0 +)中的属性

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

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
      
    • 使用Java系统属性:

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

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

    java -Dserver.port=7788 -jar <path/to/my/jar>
    
  4. 定义操作系统环境变量

    • U * IX Shell

      SERVER_PORT=7788 java -jar <path/to/my/jar>
      
    • SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
      
  5. 将属性放在./config/application.properties 配置文件

    server.port=7788
    

    并运行:

     java -jar <path/to/my/jar>
    
  6. 将属性放在./config/application.yaml

    server:
        port: 7788
    

    并运行:

     java -jar <path/to/my/jar>
    
  7. 将属性放在./application.properties

    server.port=7788
    

    并运行:

     java -jar <path/to/my/jar>
    
  8. 将属性放在./application.yaml

    server:
        port: 7788
    

    并运行:

     java -jar <path/to/my/jar>
    
  9. 您可以将上述方法组合在一起,并且列表中的前一个配置优先于后者。

    例如:

    SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788
    

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

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

      

    开箱即用,但随着要求开始偏离默认值,请尽快解决。

    SERVER_NAMEserver.name转换由Relaxed Binding完成。

答案 3 :(得分:94)

另外,您可以通过编程方式配置端口

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

答案 4 :(得分:72)

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

HashMap<String, Object> 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

答案 5 :(得分:55)

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

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

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

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

答案 6 :(得分:44)

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

server:
     port: 9000

当然是随机端口0。

答案 7 :(得分:39)

正如Spring documentation中所述,有几种方法可以做到:

您可以在命令行中设置端口(例如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

答案 8 :(得分:32)

application.properties

中加入以下属性
server.port=8080

答案 9 :(得分:17)

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

Name

这可能有助于环境相关端口等事情。 祝你有愉快的一天

答案 10 :(得分:15)

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

答案 11 :(得分:14)

扩展其他答案:

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

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

}

答案 12 :(得分:13)

有三种方法可以完成此操作,具体取决于您使用的应用程序配置文件

a)如果您使用的是 application.properties 文件集

server.port = 8090

b)如果您使用的是 application.yml 文件,请按照以下给出的YAML格式设置服务器端口属性

server:
     port: 8090

c)您还可以在 main方法

中将该属性设置为System属性。
System.setProperty("server.port","8090");

答案 13 :(得分:13)

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

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

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

  

一个。在类路径中使用application.properties如   的 SRC \主\资源\ application.properties

server.port = 8585

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

server.port = 0

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

  

湾在classpath中使用application.yml   的 SRC \主\资源\ 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<String, Object> map = new HashMap<>();
        map.put("SERVER_PORT", "8585");
        application.setDefaultProperties(map);
        application.run(args);
        }     
} 

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

答案 14 :(得分:13)

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

server.port=8082

答案 15 :(得分:11)

application.properties文件中,添加以下行:

server.port = 65535

放置国际剑联的位置:

  

24.3应用程序属性文件

     

SpringApplication从application.properties文件加载属性   在以下位置并将其添加到Spring Environment:

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

答案 16 :(得分:11)

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

参考: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

答案 17 :(得分:9)

默认情况下,spring-web模块提供了一个嵌入式tomcat服务器,该服务器在端口号8080下运行。如果您需要更改应用程序的端口号,请转到application.properties文件并通过以下命令配置端口号使用server.port属性。

  server.port= 9876

然后您的应用程序在9876端口下运行。

答案 18 :(得分:9)

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

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

答案 19 :(得分:8)

application.properties文件

中添加此内容
server.port= 8080

答案 20 :(得分:7)

在application.properties文件中提供端口号将解决此问题

 server.port = 8080

“端口取决于您的选择,您希望在其中托管应用程序”

答案 21 :(得分:7)

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

SERVER_PORT=8080

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

答案 22 :(得分:7)

希望这个帮助

application.properties=> 

server.port=8090

application.yml=> 

server
  port:8090

答案 23 :(得分:7)

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

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

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

答案 24 :(得分:6)

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);

    }

}

答案 25 :(得分:5)

在项目的application.properties中只有一个src/main/resources,然后在那里

server.port=****

其中****表示端口号。

答案 26 :(得分:4)

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

server:
  port: 8291

如果您正在使用maven,则可以在 application.properties 文件中将端口设置为:

server.port: 8291

答案 27 :(得分:4)

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

  1. 运行 - &gt;配置部分

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

答案 28 :(得分:4)

您可以在/ src / main / resources /

下的application.properties中进行设置
server.port = 8090

答案 29 :(得分:3)

您可以在 src / main / resources 中的 application.property 文件或 application.yaml 文件中配置端口。 / p>

server.port = 8080

enter image description here

答案 30 :(得分:3)

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

1在application.properties文件

中设置server.port属性
server.port = 8090

2在application.yml文件

中设置服务器端口属性
server:
     port: 8090

3在main方法

中将属性设置为系统属性
System.setProperty("server.port","8090");

答案 31 :(得分:3)

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

  

注意 –您可以使用 server.port = 0 春季启动程序来查找任何未分配的http随机端口   为我们。

1)application.properties

server.port=2020

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

答案 32 :(得分:3)

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

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

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

答案 33 :(得分:3)

只需设置环境变量SERVER_PORT
(示例适用于Linux

  • 通过 java -jar 开始:
    SERVER_PORT=9093 java -jar target/eric-sc-dummy.jar

  • 通过 maven spring-boot插件开始:
    SERVER_PORT=9093 mvn spring-boot:run

提示:

  • 如果在java -jarmvn命令之前添加其他子命令,则需要添加export以在单独的命令中设置env,并通过{{1} },以确保它可用于子流程。
    例如:
    ;

答案 34 :(得分:3)

您可以在spring boot项目的resources文件夹中的application.properties文件中配置端口。

server.port="port which you need"

答案 35 :(得分:3)

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

使用application.properties

添加server.port=9898

在运行时配置

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

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

答案 36 :(得分:2)

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

Spring属性

  

<强> server.port = 9999   如果您使用CMD,请按照此命令操作   的 -Dserver.port = 9999   对于默认端口,其server.port = 0   确保没有端口正在使用此端口号

答案 37 :(得分:2)

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

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

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

如需更复杂的答案,请参阅我的回答here

答案 38 :(得分:2)

默认端口是: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.

答案 39 :(得分:1)

在“应用程序”属性中,只需添加1行

server.port = 8090

答案 40 :(得分:1)

使用 mvn shell 命令行,spring-boot 2:

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

答案 41 :(得分:1)

在文件application.properties中添加以下内容: server.port = 8888 始终在此提及需要的

答案 42 :(得分:1)

默认情况下,Spring-web 模块提供了一个在端口号 8080 上运行的嵌入式 tomcat 服务器。

您可以按如下方式进行更改 -

A) 如果您使用的是 gradle,则可以在 application.yml 中设置该属性:

 server:  
      port: 8042

B) 如果您使用的是 maven,那么您可以在 application.properties 中设置该属性:

server.port: 8042

C) 当您在自己的配置文件中有端口并希望在运行时设置它时。

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

@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

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

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

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

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

答案 43 :(得分:1)

以编程方式,使用Spring Boot 2.1.5:

import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;

@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {

    @Override
    public void customize(ConfigurableServletWebServerFactory server) {
        server.setPort(9000);
    }

}

答案 44 :(得分:1)

如果您的端口号可以是随机的,则可以在application.properties server.port=${random.int(4)}

中使用随机函数

答案 45 :(得分:1)

类似于https://stackoverflow.com/a/36865796/1587329https://stackoverflow.com/a/40799750/1587329单线摇动将是

SERVER_PORT=9090 gradle bootRun

答案 46 :(得分:1)

server.port = 8080 ”仅在您通过main方法将jar作为jar运行时才有效,

如果您通过tomcat容器将此应用程序作为war文件运行,则此配置将无效。

答案 47 :(得分:1)

如果要在命令环境中将应用程序作为jar文件运行,只需键入“SERVER_PORT = ***”作为前缀即可。要执行的完整命令如下所示:

SERVER_PORT=8080 java -jar ***.jar

如果你想在Linux的后台运行app,那么带'nohup'的命令将如下所示:

SERVER_PORT=8080 nohup java -jar ***.jar &

答案 48 :(得分:1)

在spring boot中,您可以轻松配置application.properties文件中的服务公开端口。

server.port=portnumber

如果您没有专门设置端口,那么它将尝试使用端口80打开服务。如果已经使用过,则不会在嵌入式容器上启动服务。

答案 49 :(得分:1)

这对我有用:

添加了自定义容器类:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

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

}

但这仍未使用8888端口。

然后我设置&#34; scanBasePackages&#34;像这样的财产&#34; @ SpringBootApplication&#34;我的主要方法课程:(scanBasePackages = {"custom container package"})

@SpringBootApplication(scanBasePackages = {"com.javabrains.util"})
public class CourseApiApp {

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

它开始在自定义容器中拾取端口集。

答案 50 :(得分:0)

除了所有答案,我想指出的是,大多数IDE(带有Spring插件的IntelliJ,STS)都具有一项功能,可以建议SpringBoot支持的所有配置键。 (即所有自认为是配置关键字)

enter image description here

Spring Plugin for Intellij

答案 51 :(得分:0)

server.port = 0(用于随机端口)

server.port = 8080(用于自定义8080端口)

答案 52 :(得分:0)

在我的情况下添加声明

server.port=${port:8081}

覆盖默认的tomcat服务器端口。

答案 53 :(得分:0)

服务器端口声明有两种类型

1.static类型

   server.port=8080. // your port number
  1. 动态类型

     server.port=0.      // randomly generate port number. 
     server.port=${PORT:0}
    

答案 54 :(得分:0)

把这段代码放在你的 appplicatop.properties 文件中
enter image description here

答案 55 :(得分:0)

如果您使用 spring 命令行界面 (CLI),请使用 -- 将命令与 spring 命令参数分开,以更改端口:

spring run hello.groovy -- --server.port=9000

spring-boot cli

答案 56 :(得分:0)

通过

<块引用>

application.properties

server.port = 8082(或任何新的端口号)

<块引用>

通过

<块引用>

应用程序.yml

server
  port: 8082

答案 57 :(得分:-1)

配置文件或应用程序属性中配置端口详细信息。

例如

port =8876