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

Pau*_*est 728 java port spring spring-boot server

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

Pau*_*est 1134

正如在所述的文档任一组server.port使用命令行选项来JVM中的系统属性-Dserver.port=8090或添加application.properties/src/main/resources/

server.port=8090
Run Code Online (Sandbox Code Playgroud)

用于随机端口使用

server.port=0
Run Code Online (Sandbox Code Playgroud)

  • 当使用随机端口时,端口信息可以通过`@Value("$ {local.server.port}")`获得 (42认同)
  • 实际上命令行选项是--server.port = 8090而不是-Dserver.port = 8090.http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-use-short-command-line-arguments (38认同)
  • -Dserver.port = XXXX对我不起作用.我使用了OS环境变量模式:`$ SERVER_PORT = 8090 java -jar <path/to/my/jar> (12认同)
  • (1)`java -Dserver.port = XXXX -jar <path/to/my/jar>`和(2)`java -jar <path/to/my/jar> --server.port = YYYY` .第一个命令定义`server.port`系统属性,第二个命令通过命令行参数传递属性(`main`方法中的`String ... args`).此外,如果你使用`java -Dserver.port = XXXX -jar <path/to/my/jar> --server.port = YYYY`运行,`YYYY`优先于`XXXX`,这就是Spring Boot Externalized的原因配置非常迷人. (9认同)

ana*_*ocs 181

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

修改application.properties

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

server.port = 8090
Run Code Online (Sandbox Code Playgroud)

application.properties文件

修改VM选项

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

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

-Dserver.port=8090
Run Code Online (Sandbox Code Playgroud)

使用vm arg更改端口

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


tan*_*an9 132

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

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

    java -jar <path/to/my/jar> --server.port=7788
    
    Run Code Online (Sandbox Code Playgroud)
  2. 来自SPRING_APPLICATION_JSON(Spring Boot 1.3.0+)的房产

  3. 定义JVM系统属性

    java -Dserver.port=7788 -jar <path/to/my/jar>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 定义OS环境变量

  5. 将属性放在./config/application.properties 配置文件中

    server.port=7788
    
    Run Code Online (Sandbox Code Playgroud)

    并运行:

     java -jar <path/to/my/jar>
    
    Run Code Online (Sandbox Code Playgroud)
  6. 将物业放入 ./config/application.yaml

    server:
        port: 7788
    
    Run Code Online (Sandbox Code Playgroud)

    并运行:

     java -jar <path/to/my/jar>
    
    Run Code Online (Sandbox Code Playgroud)
  7. 将物业放入 ./application.properties

    server.port=7788
    
    Run Code Online (Sandbox Code Playgroud)

    并运行:

     java -jar <path/to/my/jar>
    
    Run Code Online (Sandbox Code Playgroud)
  8. 将物业放入 ./application.yaml

    server:
        port: 7788
    
    Run Code Online (Sandbox Code Playgroud)

    并运行:

     java -jar <path/to/my/jar>
    
    Run Code Online (Sandbox Code Playgroud)

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

例如:

SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788
Run Code Online (Sandbox Code Playgroud)

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

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

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


SERVER_NAMEserver.name转化所做轻松绑定.


mak*_*erj 97

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

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

  • 当我需要将应用程序部署到AWS Elastic Beanstalk服务,从环境变量获取端口时,这很有用. (4认同)
  • 当您在自己的配置文件中有端口并希望在运行时设置它时,这是有效且非常有用的。 (2认同)
  • 不是`@Configuration`而不是`@Controller`吗?如果有,请更新. (2认同)

ayu*_*huk 73

你可以在java代码中设置port:

HashMap<String, Object> props = new HashMap<>();
props.put("server.port", 9999);

new SpringApplicationBuilder()
    .sources(SampleController.class)                
    .properties(props)
    .run(args);
Run Code Online (Sandbox Code Playgroud)

或者在application.yml中:

server:
    port: 9999
Run Code Online (Sandbox Code Playgroud)

或者在application.properties中:

server.port=9999
Run Code Online (Sandbox Code Playgroud)

或者作为命令行参数:

-Dserver.port=9999
Run Code Online (Sandbox Code Playgroud)


itw*_*lal 61

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

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

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

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085
Run Code Online (Sandbox Code Playgroud)

  • 从 Spring Boot 2 开始,你应该使用 `spring-boot.run.jvmArguments`。 (2认同)

gat*_*gaj 45

如果您正在使用application.yml添加以下行

server:
     port: 9000
Run Code Online (Sandbox Code Playgroud)

当然0为随机端口.


Oli*_*ien 40

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

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

-Dserver.port=8888 要么 --server.port=8888

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

或者在application.properties中设置端口

server.port=${port:4588}
Run Code Online (Sandbox Code Playgroud)

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

server:
   port: ${port:4588}
Run Code Online (Sandbox Code Playgroud)

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

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

server.port=8888
Run Code Online (Sandbox Code Playgroud)


Cha*_*uli 33

包括以下房产 application.properties

server.port=8080
Run Code Online (Sandbox Code Playgroud)


小智 20

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

server:
  port: 8291
Run Code Online (Sandbox Code Playgroud)

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

server.port: 8291
Run Code Online (Sandbox Code Playgroud)


Lui*_*cio 18

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

System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);
Run Code Online (Sandbox Code Playgroud)

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

  • `System.setProperty("server.port",80);`是另一种实现相同目的的方法. (2认同)

nnd*_*dru 15

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


Ami*_*thi 15

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

server.port=8082
Run Code Online (Sandbox Code Playgroud)


Pau*_*Pau 14

扩展其他答案:

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


在集成测试中,使用注释@SpringBootTestwebEnvironment值进行端口配置.


随机端口:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
Run Code Online (Sandbox Code Playgroud)

您可以使用注射值@LocalServerPort是一样的@Value("${local.server.port}").

  • 例:

随机端口测试配置:

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

定义的端口:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)
Run Code Online (Sandbox Code Playgroud)

它取自server.portif的定义值.

  • 如果使用定义@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() {
    }

}
Run Code Online (Sandbox Code Playgroud)


Hum*_*mad 14

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

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

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

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

server.port = 8585
Run Code Online (Sandbox Code Playgroud)

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

server.port = 0
Run Code Online (Sandbox Code Playgroud)

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

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

server:
  port: 8585 
Run Code Online (Sandbox Code Playgroud)

服务器将以8585端口开始.

对于随机端口,分配0.

server:
  port: 0 
Run Code Online (Sandbox Code Playgroud)

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

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

使用--server.port

java -jar my-app.jar  --server.port=8585
Run Code Online (Sandbox Code Playgroud)

使用-Dserver.port

java -jar -Dserver.port=8585 my-app.jar
Run Code Online (Sandbox Code Playgroud)

服务器将以8585端口开始.

在短时间内使用带有--port或-Dport的java命令

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

使用application.properties

server.port=${port:8282}
Run Code Online (Sandbox Code Playgroud)

使用application.yml

server:
   port: ${port:8282}
Run Code Online (Sandbox Code Playgroud)

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

使用--port

java -jar my-app.jar --port=8585 
Run Code Online (Sandbox Code Playgroud)

使用-Dport

java -jar -Dport=8585 my-app.jar 
Run Code Online (Sandbox Code Playgroud)

服务器将以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);
        }     
} 
Run Code Online (Sandbox Code Playgroud)

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


小智 14

根据您使用的应用程序配置文件,有三种方法可以执行此操作

a)如果您正在使用application.properties文件集

server.port = 8090

b)如果您正在使用YAML格式的application.yml文件集服务器端口属性,如下所示

server:
     port: 8090
Run Code Online (Sandbox Code Playgroud)

c)您还可以在main方法中将属性设置为System属性

System.setProperty("server.port","8090");
Run Code Online (Sandbox Code Playgroud)


Naf*_*ema 12

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

  server.port= 9876
Run Code Online (Sandbox Code Playgroud)

那么您的应用程序正在端口 9876 下运行。


dee*_*mar 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
Run Code Online (Sandbox Code Playgroud)


Zha*_*ang 11

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

server.port = 65535

在哪里放置那个fie:

24.3应用程序属性文件

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

A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root
Run Code Online (Sandbox Code Playgroud)

列表按优先级排序(在列表中较高位置定义的属性将覆盖在较低位置中定义的属性).

在我的情况下,我把它放在jar文件所在的目录中.

从:

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


Rak*_*esh 9

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

  2. 如果在项目中使用弹簧执行器,默认情况下它指向
    8080,如果要更改它,则在application.properties中提及
    management.port = 9001(可以是任何其他值)


小智 9

将其添加到您的application.properties文件中

server.port= 8080
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到SO :-)请看[答案] (2认同)

ana*_*ule 8

By default spring boot app start with embedded tomcat server start at default port 8080. spring provides you with following different customization you can choose one of them.

NOTE – you can use server.port=0 spring boot will find any unassigned http random port for us.

1) application.properties

server.port=2020
Run Code Online (Sandbox Code Playgroud)

2) application.yml

server:  
     port : 2020
Run Code Online (Sandbox Code Playgroud)

3) Change the server port programatically

3.1) By implementing WebServerFactoryCustomizer interface - Spring 2.x

@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        // customize the factory here
        factory.setPort(2020);
    }
}
Run Code Online (Sandbox Code Playgroud)

3.2) By Implementing EmbeddedServletContainerCustomizer interface - Spring 1.x

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        // customize here
        container.setPort(2020);
    }
}
Run Code Online (Sandbox Code Playgroud)

4) By using command line option

 java -jar spring-boot-app.jar -Dserver.port=2020
Run Code Online (Sandbox Code Playgroud)


Ish*_*arg 8

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

\n

您可以按如下方式更改它 -

\n

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

\n
 server:  \n      port: 8042\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
server.port: 8042\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n
@Component\npublic class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {\n\n    @Override\n    public void customize(TomcatServletWebServerFactory factory) {\n        // customize the factory here\n        factory.setPort(8042);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
@Component\npublic class CustomizationBean implements EmbeddedServletContainerCustomizer {\n\n    @Override\n    public void customize(ConfigurableEmbeddedServletContainer container) {\n        // customize here\n        container.setPort(8042);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Adr*_*sma 7

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

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

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


Uli*_*ses 7

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

SERVER_PORT=8080
Run Code Online (Sandbox Code Playgroud)

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


小智 7

希望这一个帮助

application.properties=> 

server.port=8090

application.yml=> 

server
  port:8090


Ash*_*ini 7

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

 server.port = 8080
Run Code Online (Sandbox Code Playgroud)

"端口取决于您的选择,您希望托管应用程序的位置"


Ady*_*ior 7

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

mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
Run Code Online (Sandbox Code Playgroud)


小智 6

只需拥有一个项目并application.properties放在src/main/resources那里

server.port=****
Run Code Online (Sandbox Code Playgroud)

where ****指的是端口号.


小智 6

1.1通过属性文件更新.

/src/main/resources/application.properties

server.port = 8888

通过yaml文件更新.

   server:

     port: 8888
Run Code Online (Sandbox Code Playgroud)

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8888);

    }

}
Run Code Online (Sandbox Code Playgroud)


ope*_*eek 5

您可以通过以下方法添加端口。

  1. 运行->配置部分

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


Ali*_*ani 5

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

set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux
Run Code Online (Sandbox Code Playgroud)

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


Abh*_*eet 5

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

server.port = 8090
Run Code Online (Sandbox Code Playgroud)


小智 5

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

server.port="port which you need"
Run Code Online (Sandbox Code Playgroud)


Moh*_*raj 5

port:8080由于嵌入式 Tomcat,主要是 springboot 运行。在某些情况下,它可能会引发错误port 8080 already in use。为了避免此类问题,我们可以配置服务器端口。

使用 application.properties

添加 server.port=9898

在运行时配置

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

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


Md.*_*sen 5

通过 Gradle 运行:

  • 在默认端口(8080)运行:./gradlew bootRun
  • 在提供的端口(8888)中运行:./gradlew bootRun --args='--server.port=8888'
  • application.properties如果名为 的文件中有任何变量PORT,请运行以下命令:PORT=8888 ./gradlew bootRun

通过 Maven 运行:

  • 在默认端口(8080)运行:mvnw spring-boot:run
  • 在提供的端口(8888)中运行:mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
  • 在提供的端口(8888)中运行:mvn spring-boot:run -Dspring-boot.run.arguments='--server.port=8085'
  • 使用其他自定义属性在提供的端口(8888)中运行:mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
  • application.properties如果名为 的文件中有任何变量PORT,请运行以下命令:SERVER_PORT=9093 mvn spring-boot:run

使用java -jar

  • 创建 .jar 文件:
    • 对于 Gradle:./gradlew clean build. 我们将在:文件夹中找到 jar 文件build/libs/
    • 对于 Maven mvn clean install:. 我们将在:文件夹中找到 jar 文件target
  • 在默认端口(8080)运行:java -jar myApplication. jar
  • 在提供的端口(8888)中运行:java -jar myApplication.jar --port=8888
  • 在提供的端口(8888)中运行:java -jar -Dserver.port=8888 myApplication.jar
  • 在提供的端口(8888)中运行,SERVER_PORT在 application.properties 文件中具有变量:SERVER_PORT=8888 java -jar target/myApplication.jar


小智 5

在 Spring Boot 应用程序中打开 application.properties 文件。并在属性文件中添加以下属性。

server.port = 1443
Run Code Online (Sandbox Code Playgroud)

这将工作正常,您可以根据您的意愿设置任何端口号。