How to configure port for a Spring Boot application
如何配置Spring引导应用程序监听的TCP/IP端口,使其不使用默认端口8080。
如文档中所述,要么使用jvm
1 | server.port = 8090 |
用于随机端口
1 | server.port=0 |
号
在Spring引导应用程序中,有两种主要方法可以更改嵌入式Tomcat中的端口。
修改application.properties
首先,您可以尝试/resources文件夹中的application.properties文件:
1 | server.port = 8090 |
。
修改虚拟机选项
第二种方法是,如果希望避免修改任何文件并签入仅在本地需要的文件,则可以使用vm参数:
转到运行->编辑配置->虚拟机选项
1 | -Dserver.port=8090 |
氧化镁
此外,如果您需要更多信息,可以在此处查看以下日志:更改Spring引导应用程序上的端口
由于Spring boot提供了各种配置外部化机制(通过各种连接到
将属性作为应用程序参数通过命令行参数传递
1 | java -jar <path/to/my/jar> --server.port=7788 |
来自
在u*ix shell中定义环境变量:
1SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>。
通过使用Java系统属性:
1java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>传递命令行参数:
1java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'。
定义JVM系统属性
1 | java -Dserver.port=7788 -jar <path/to/my/jar> |
。
定义OS环境变量
U*IX外壳
1SERVER_PORT=7788 java -jar <path/to/my/jar>窗户
1
2SET SERVER_PORT=7788
java -jar <path/to/my/jar>。
将属性放入
1 | server.port=7788 |
然后运行:
1 | java -jar <path/to/my/jar> |
。
把财产放在
1 2 | server: port: 7788 |
号
然后运行:
1 | java -jar <path/to/my/jar> |
。
置业于
1 | server.port=7788 |
然后运行:
1 | java -jar <path/to/my/jar> |
。
置业于
1 2 | server: port: 7788 |
号
然后运行:
1 | java -jar <path/to/my/jar> |
。
您可以将以上所有方法组合在一起,列表中的前一个配置优先于后一个配置。
例如:
1 | SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788 |
号
服务器将启动并监听端口7788。
这对于在优先级较低的属性源中提供默认属性(通常打包在存档中或在源中编码)非常有用,然后在运行时环境中重写它。它是弹簧靴的设计理念:
Be opinionated out of the box, but get out of the way quickly as requirements start to diverge from the defaults.
号
此外,还可以通过编程方式配置端口
1 2 3 4 5 6 7 8 9 | @Configuration public class ServletConfig { @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { container.setPort(8012); }); } } |
。
可以在Java代码中设置端口:
1 2 3 4 5 6 7 | HashMap<String, Object> props = new HashMap<>(); props.put("server.port", 9999); new SpringApplicationBuilder() .sources(SampleController.class) .properties(props) .run(args); |
。
或在application.yml中:
1 2 | server: port: 9999 |
或在application.properties中:
1 | server.port=9999 |
。
或作为命令行参数:
1 | -Dserver.port=9999 |
如果要在本地运行它,请使用此-
埃多克斯1〔8〕
从SpringBoot2.0开始,以下是有效的命令(这里有线索):
1 | mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085 |
号
如果您使用的是
1 2 | server: port: 9000 |
当然,对于随机端口为0。
如Spring文档中所述,有几种方法可以做到这一点:
在命令行中设置端口(例如8888)
示例:
或者在application.properties中设置端口。
1 | server.port=${port:4588} |
号
或(在application.yml中,使用yaml语法)
1 2 | server: port: ${port:4588} |
号
如果在命令行中设置了-dport(或-dserver.port)传递的端口,那么将考虑该端口。如果没有,则默认端口为4588。
如果您想强制属性文件中的端口使用环境变量,只需写:
1 | server.port=8888 |
在
1 | server.port=8080 |
号
当您需要一种编程方式时,可以在启动时设置:
1 2 |
。
这可能对环境相关端口之类的事情有所帮助。祝你今天愉快
可以通过在配置中重写EDCOX1×4 bean来指定端口(基于Java或XML)。在这里,您可以为使用的嵌入式servlet容器指定端口。请参阅弹簧引导-核心"嵌入式servlet容器支持"一段和示例。希望这有帮助。
扩展其他答案:
在测试文档中有一节解释了如何在集成测试中配置端口:
- 41.3测试弹簧套应用
- 41.3.3使用随机端口
在集成测试中,端口配置是使用注释
1 | @SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT) |
您可以使用与
- 例子:
随机端口测试配置:
1 2 3 4 5 6 7 | @RunWith(SpringRunner.class @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class ExampleTest { ... @LocalServerPort //to inject port value int port; } |
号定义的端口:
1 | @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) |
号
如果已定义,则从
- 如果使用
@TestPropertySource(properties ="server.port=9192") 定义,它将覆盖其他定义的值。 - 如果没有,则取
src/test/resources/application.properties 的值(如果存在)。 - 最后,如果没有定义,则从默认的
8080 开始。
例子:
定义的端口测试配置:
1 2 3 4 5 6 7 8 9 10 | @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @TestPropertySource(properties ="server.port=9192") public class DemoApplicationTests { @Test public void contextLoads() { } } |
在资源中存在的
1 | server.port=8082 |
号
当Spring引导应用程序启动时,嵌入式服务器(如Tomcat)将以默认端口启动。嵌入式Tomcat默认从8080端口开始。有很多方法可以更改默认服务器端口。
使用属性文件(.properties/.yml)
要使用属性文件更改服务器端口,我们需要配置server.port属性。
a. Using application.properties in classpath such as
src\main
esources\application.properties
号
1 | server.port = 8585 |
。
服务器将以8585端口启动。若要获取随机服务器端口,请将0分配给属性。
1 | server.port = 0 |
。
现在,SpringBoot将在系统中任何服务器当前未使用的端口上启动服务器。
b. Using application.yml in classpath such as
src\main
esources\application.yml.
号
1 2 | server: port: 8585 |
服务器将以8585端口启动。
对于随机端口,分配0。
1 2 | server: port: 0 |
。
使用.Server端口或-dServ.PoT的Java命令
假设我们有一个名为MyApp.jar的可执行jar,然后在使用Java命令启动Spring启动应用程序时,我们可以使用如下的参数。
Using --server.port
号
1 | java -jar my-app.jar --server.port=8585 |
Using -Dserver.port
号
1 | java -jar -Dserver.port=8585 my-app.jar |
。
服务器将以8585端口启动。
使用JAVA命令使用-PART或Dport
简而言之,要使--server.port和-dserver.port,我们可以删除server关键字并使其成为任何短关键字,如--port和-dport。我们可以使用任何短关键字。这里我们使用端口作为短关键字。为了实现它,我们需要在属性文件中配置占位符,如下所示。
Using application.properties
号
1 | server.port=${port:8282} |
号
Using application.yml
号
1 2 | server: port: ${port:8282} |
号
如果我们不将端口作为参数传递,那么默认情况下,服务器将从8282开始。如果我们想要一个不同的端口,那么我们需要在下面的参数中传递所需的端口。假设我们有一个名为my-app.jar的可执行jar。
Using --port
号
1 | java -jar my-app.jar --port=8585 |
号
Using -Dport
号
1 | java -jar -Dport=8585 my-app.jar |
号
服务器将以8585端口启动。
以编程方式将服务器端口与SpringApplication一起使用
SpringApplication有一个方法setDefaultProperties(),用于更改Spring引导默认属性。假设我们想要更改默认端口,那么我们需要创建一个映射并放置一个带有服务器端口密钥的端口。找到例子。
我的应用程序.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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); } } |
号
SpringBoot将使用8585端口启动服务器。
根据您使用的应用程序配置文件,有三种方法可以做到这一点
a)如果使用application.properties文件集
b)如果您使用application.yml文件,请按下面给出的yaml格式设置服务器端口属性
1 2 | server: port: 8090 |
。
c)也可以在主方法中将该属性设置为系统属性。
1 |
通过更改application.properties,您可以在服务器配置中更改许多其他内容。如会话超时、地址和端口等,请参阅下文。
参考:http://docs.spring.io/spring-boot/docs/1.4.x/reference/html/common-application-properties.html
我很少使用它们,如下所示。
1 2 3 | server.session.timeout=1 server.port = 3029 server.address= deepesh |
在
埃多克斯1〔2〕
在何处放置外商投资企业:
24.3 Application Property Files
SpringApplication loads properties from application.properties files
in the following locations and adds them to the Spring Environment:
1
2
3
4 A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath rootThe list is ordered by precedence (properties defined in locations
higher in the list override those defined in lower locations).
号
在我的例子中,我把它放在
来自:
https://docs.spring.io/spring boot/docs/current/reference/htmlsingle/boot features外部配置应用程序属性文件
如大家所说,您可以在application.properties中指定server.port=9000(可以是任何其他值)
如果在项目中使用弹簧执行器,默认情况下,它指向8080,如果要更改它,请在application.properties中提到management.port=9001(可以是任何其他值)
在你的
1 | server.port= 8080 |
号
实际上,最简单的方法是设置server.port属性。
如果您使用STS作为IDE,那么在3.6.7版中,您实际上有了用于打开属性文件的Spring属性编辑器。
此编辑器为所有Spring引导属性提供自动完成功能。如果写入端口并按ctrl+space,则server.port将是第一个选项。
希望这个能帮上忙
1 2 3 4 5 6 7 8 | application.properties=> server.port=8090 application.yml=> server port:8090 |
号
在application.properties文件中提供端口号将解决此问题
1 | server.port = 8080 |
端口取决于您的选择,要在哪里承载应用程序
例如,使用属性server.port=8080,就像其他答案中提到的那样,绝对是一种方法。只想说明您还可以公开环境属性:
1 | SERVER_PORT=8080 |
号
因为在最新版本中,Spring boot能够替换"."表示"u",并从小写到大写表示环境变量。这在容器中特别有用,您只需定义环境变量而不添加/编辑
1.1通过属性文件更新。
/src/main/resources/application.properties
server.port=8888
通过yaml文件更新。
1 2 3 | server: port: 8888 |
EmbeddedServletContainer自定义程序
1 2 3 4 5 6 7 8 9 10 11 | @Component public class CustomContainer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8888); } } |
。
只要在项目的
1 | server.port=**** |
号
其中
您可以在/src/main/resources下的application.properties中进行设置。/
1 | server.port = 8090 |
默认情况下,Spring引导应用程序从默认端口8080启动嵌入式Tomcat服务器。Spring为您提供了以下不同的定制,您可以选择其中之一。
NOTE – you can use server.port=0 spring boot will find any unassigned http random port
for us.
号
1)应用程序属性
1 | server.port=2020 |
。
2)应用.yml
1 2 | server: port : 2020 |
3)通过编程更改服务器端口
3.1)通过实现WebServerFactoryCustomizer接口-Spring2.x
1 2 3 4 5 6 7 8 9 | @Component public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> { @Override public void customize(TomcatServletWebServerFactory factory) { // customize the factory here factory.setPort(2020); } } |
。
3.2)通过实现EmbeddedServletContainerCustomizer接口-Spring1.x
1 2 3 4 5 6 7 8 9 | @Component public class CustomizationBean implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { // customize here container.setPort(2020); } } |
4)使用命令行选项
1 | java -jar spring-boot-app.jar -Dserver.port=2020 |
。
您可以在以下方法中添加端口。
运行->配置部分
在
您还可以使用
1 2 | set SERVER_PORT=9999 // on windows machine export SERVER_PORT=9999 // on linux |
号
请注意,如果不在系统范围内设置这些环境变量,则应在同一会话上运行引导应用程序。
可以在Spring引导项目的resources文件夹中的application.properties文件中配置端口。
1 | server.port="port which you need" |
号
有三种方法可以做到
1在
1 | server.port = 8090 |
2设置
1 2 | server: port: 8090 |
3.在
1 |
由于嵌入了Tomcat,大多数SpringBoot运行在
增加
使用以下参数运行应用程序。
江户十一〔四〕号
如果要在命令环境中以JAR文件的形式运行应用程序,只需键入"serveru port=***"作为前缀。要执行的完整命令如下所示:
1 | SERVER_PORT=8080 java -jar ***.jar |
如果您想在Linux的后台运行应用程序,那么带有"nohup"的命令如下所示:
1 | SERVER_PORT=8080 nohup java -jar ***.jar & |
号
如果你谷歌搜索GradleSpring端口,这个问题是第一个结果。
如果使用Gradle,如果已经应用了Spring Boot Gradle插件,则可以这样做:
1 2 3 | bootRun { args += ["--server.port=[PORT]"] } |
号
关于更复杂的答案,请看我的答案。
如果您正在处理引导项目,并且您想要配置端口,那么您可以在application.properties文件中提供如下输入:注意:属性文件应该在src/main/resource下
弹簧特性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
号
默认端口为:8080,但我们可以在application.properties中自定义端口号。如下图所示
1 2 3 | spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp server.port = 5050 -- #here we can give any port number. |
。
"server.port=8080"仅在通过主方法将应用程序作为JAR运行时有效,
如果您通过Tomcat容器将此应用程序作为war文件运行,则此配置将不起作用。
如果您的端口号是随机的,您可以在您的
这对我很有用:
添加了自定义容器类:
1 2 3 4 5 6 7 8 9 | @Component public class CustomContainer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) { configurableEmbeddedServletContainer.setPort(8888); } } |
但这仍然没有使用端口8888。
然后我在主方法:
1 2 3 4 5 6 7 | @SpringBootApplication(scanBasePackages = {"com.javabrains.util"}) public class CourseApiApp { public static void main (String args []) { SpringApplication.run(CourseApiApp.class, args); } } |
号
它开始提取定制集装箱中设置的港口。
在Spring引导中,您可以很容易地在
1 | server.port=portnumber |
如果您没有具体设置端口,那么它将尝试使用端口
与https://stackoverflow.com/a/36865796/1587329和https://stackoverflow.com/a/40799750/1587329类似,Gradle One衬板将
1 | SERVER_PORT=9090 gradle bootRun |
。
在应用程序属性中,只需添加一行
1 | server.port = 8090 |
号
在我的例子中,添加语句
1 | server.port=${port:8081} |
号
覆盖默认的Tomcat服务器端口。