Spring Boot - 如何配置端口

gautem 发布于 2019-04-24 configuration 最后更新 2019-04-24 14:25 46 浏览

寻找如何在Spring引导应用程序中配置端口:

@Controller
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }
public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}
这是所有的来源:)
已邀请:

verror

赞同来自:

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

SERVER_PORT=8080 java -jar ***.jar
如果你想在Linux下运行应用程序,使用'nohup'命令将如下所示:
SERVER_PORT=8080 nohup java -jar ***.jar &

oqui

赞同来自:

如文档http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-change-the-http-port所述 使用命令行选项将server.port设置为系统属性为jvm --server.port=8090,或者在/src/main/resources/中添加application.properties

server.port = 8090
用于随机端口使用
server.port=0

edolor

赞同来自:

您可以在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

eet

赞同来自:

“server.port = 8080”仅在您通过main方法运行应用程序时才有效, 如果您通过tomcat容器将此应用程序作为war文件运行,则此配置将不起作用。

ivel

赞同来自:

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

server:
     port: 9000
当然0为随机端口。

fdolor

赞同来自:

您可以在application.properties文件中配置端口 server.port=8090 要么 在运行时,您可以使用命令行arg
-Dserver.port=8090

killo

赞同来自:

在我的情况下添加声明

server.port=${port:8081}
覆盖默认的tomcat服务器端口。

lest

赞同来自:

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

Spring属性
server.port=9999 If you using the CMD then follow this command -Dserver.port=9999 For default port its server.port=0 Make sure no port is using this port number

enemo

赞同来自:

有三种方法可以做到这一点 1在application.properties文件中设置server.port属性 server.port = 8090 2在application.yml中设置服务器端口属性 服务器:      港口:8090 3在main方法中将属性设置为系统属性 System.setProperty( “server.port”, “8090”);

rut

赞同来自:

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

eenim

赞同来自:

在spring boot中,您可以轻松配置application.properties文件中的服务公开端口。 server.port =端口号 如果您没有专门设置端口,那么它将尝试使用端口80打开服务。万一它已经被使用,将不会在嵌入式容器上启动服务。

dodit

赞同来自:

在application.properties文件中添加它 server.port 8080

paut

赞同来自:

这对我有用: 添加了自定义容器类:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
@Override
    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
       configurableEmbeddedServletContainer.setPort(8888);
    }
}
但这仍然没有使用端口8888。 然后我在我的主方法的“@SpringBootApplication”类上设置这样的“scanBasePackages”属性:(scanBasePackages = {"custom container package"})
@SpringBootApplication(scanBasePackages = {"com.javabrains.util"})
public class CourseApiApp {
public static void main (String args []) {
        SpringApplication.run(CourseApiApp.class, args);
    }
}
它开始在Custom Container中获取端口集。

zamet

赞同来自:

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

znihil

赞同来自:

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

server.port=****
其中****指的是端口号。

fomnis

赞同来自:

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

server.port = 8090

funde

赞同来自:

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

zquam

赞同来自:

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

System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);
这可能有助于环境相关的端口。 祝你今天愉快

mut

赞同来自:

您可以在spring boot项目的resources文件夹中的application.properties文件中配置端口。 server.port =“你需要的端口”

gquia

赞同来自:

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

使用application.properties 添加server.port=9898

在运行时配置 用以下参数运行你的应用程序。 spring-boot:run -Drun.jvmArguments='-Dserver.port=8081'

et_et

赞同来自:

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

  1. 运行 - >配置部分
  2. application.xml中添加server.port=XXXX

gest

赞同来自:

在application.properties中包含以下属性 server.port = 8080

gut

赞同来自:

实际上,最简单的方法是设置server.port属性。 如果您使用STS作为IDE,从版本3.6.7开始实际上有Spring属性编辑器用于打开属性文件。 此编辑器为所有Spring Boot属性提供自动完成功能。如果您编写端口并按CTRL + SPACE,server.port将是第一个选项。

xhic

赞同来自:

在Spring Boot Application中,有两种主要方法可以更改Embedded Tomcat中的端口。 修改application.properties 首先,您可以尝试/ resources文件夹中的application.properties文件:

application.properties file 修改VM选项 第二种方法,如果你想避免修改任何文件并检查你在本地只需要的东西,你可以使用vm arg: 转到运行 - >编辑配置 - > VM选项
-Dserver.port=8090
Change port with a vm arg 此外,如果您需要更多信息,可以在此处查看以下博客文章:Changing the port on a Spring Boot Application

siusto

赞同来自:

扩展其他答案: 测试文档中有一节介绍如何在集成测试中配置端口:


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

det

赞同来自:

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

server.port=8082

adolor

赞同来自:

如果你想在本地运行它而不是使用它 - mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'

gminus

赞同来自:

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

gminus

赞同来自:

使用属性server.port = 8080就像在其他答案中提到的那样绝对是一种方法。只是想提一下你也可以暴露一个环境属性: SERVERPORT = 8080 由于春季靴子能够取代“。”对于“”而言,对于最近版本中的环境变量,将其降低到UPPER大小写。 这在容器中特别有用,您需要做的就是定义该环境变量,而无需添加/编辑application.properties或通过命令行传递系统属性(即-Dserver.port = $ PORT)

funde

赞同来自:

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

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

eea

赞同来自:

如果你谷歌为Gradle Spring Port,这个问题是第一个结果。 如果您使用gradle,如果已经应用了Spring Boot Gradle Plugin,则可以执行以下操作:

bootRun {
    args += ["--server.port=[PORT]"]
}
有关更复杂的答案,请参阅我的答案here

menim

赞同来自:

由于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+)中的propety
    • 在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. 定义系统属性
    java -Dserver.port=7788 -jar <path/to/my/jar>
    
  4. 定义OS环境变量
    • 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>
    

您可以将上述方法组合在一起,并且列表中的前一个配置优先于后一个配置。 例如:
SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788
服务器将启动并侦听端口7788。 这在PropertySources中提供优先级较低的默认属性非常有用(通常打包在存档中或在源代码中编码),然后在运行时环境中覆盖它。这是Spring Boot的设计理念:
Be opinionated out of the box, but get out of the way quickly as requirements start to diverge from the defaults.

SERVER_NAMEserver.name转换由Relaxed Binding完成。

peum

赞同来自:

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

set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux
请注意,如果您未在系统范围内设置这些环境变量,则应在同一会话中运行启动应用程序。

bquia

赞同来自:

当Spring启动应用程序启动时,Tomcat等嵌入式服务器以默认端口启动。嵌入式tomcat默认以8080端口启动。有许多方法可以更改默认服务器端口。 使用属性文件(.properties / .yml) 要使用属性文件更改服务器端口,我们需要配置server.port属性。

a. Using application.properties in classpath such as src\main\resources\application.properties
server.port = 8585
服务器将以8585端口启动。要获取随机服务器端口,请为该属性指定0。
server.port = 0
现在,spring boot将在系统中任何服务器当前未使用的端口上启动服务器。
b. Using application.yml in classpath such as 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应用程序时,我们可以使用如下参数。
Using --server.port
java -jar my-app.jar  --server.port=8585
Using -Dserver.port
java -jar -Dserver.port=8585 my-app.jar
服务器将以8585端口开始。 使用带有--port或-Dport的java命令 简而言之,我们可以删除server关键字并使其成为任何短关键字,如--port和-Dport。我们可以使用任何短关键字。这里我们使用port作为短关键字。为了实现它,我们需要在属性文件中配置占位符,如下所示。
Using application.properties
server.port=${port:8282}
Using application.yml
server:
   port: ${port:8282}
如果我们不将端口作为参数传递,那么默认服务器将以8282开始。如果我们想要一个不同的端口,那么我们需要在参数中传递所需的端口,如下所示。假设我们有一个名为my-app.jar的可执行JAR。
Using --port
java -jar my-app.jar --port=8585 
Using -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启动将使用8585端口启动服务器。

phic

赞同来自:

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