如何配置Spring Boot应用程序监听的TCP/IP端口,以便不使用默认的8080端口。
如何配置Spring Boot应用程序监听的TCP/IP端口,以便不使用默认的8080端口。
如文档中所述,要么使用命令行选项将server.port
设置为系统属性,例如-Dserver.port=8090
,要么在/src/main/resources/
中添加application.properties
文件。
server.port=8090
要使用随机端口,请使用:
server.port=0
同样,在/src/main/resources/
中添加application.yml
文件,内容如下:
server:
port: 8090
@Value("${local.server.port}")
获取端口信息。 - azizunsal$ SERVER_PORT=8090 java -jar <path/to/my/jar>
- Soumya Kantijava -Dserver.port=XXXX -jar <path/to/my/jar>
和(2) java -jar <path/to/my/jar> --server.port=YYYY
都可以工作。第一条命令定义了 server.port
的系统属性,而第二条命令通过命令行参数(String... args
在 main
方法中)传递该属性。此外,如果使用 java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY
运行,则 YYYY
优先于 XXXX
,这就是为什么 Spring Boot 外部化配置如此迷人的原因。 - tan9在Spring Boot应用程序中,更改嵌入式Tomcat端口有两种主要方法。
修改application.properties文件
首先,您可以尝试在/resources文件夹中使用application.properties文件:
server.port = 8090
修改虚拟机选项
第二种方法是,如果您想避免修改任何文件并检入仅在本地需要的内容,则可以使用vm参数:
进入运行 -> 编辑配置 -> VM选项
-Dserver.port=8090
此外,如果需要更多信息,可以在此查看以下博客文章:如何更改Spring Boot应用程序的端口
由于Spring Boot提供了各种配置外部化机制(通过各种PropertySource
实现和/或处理器连接到Environment
对象中),因此您可以通过以下方法在jar存档之外设置任何属性:
将属性作为应用程序参数通过命令行参数传递
java -jar <path/to/my/jar> --server.port=7788
从属性 SPRING_APPLICATION_JSON
中获取(适用于 Spring Boot 1.3.0+)
在Unix 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}'
定义JVM系统属性
java -Dserver.port=7788 -jar <path/to/my/jar>
Windows Command Prompt
An OS environment variable is a setting that contains information about the operating system environment, such as the path to executables, default search paths for libraries, and configuration settings. They can be accessed and modified by various software programs, scripts, and batch files.
SERVER_PORT=7788 java -jar <path/to/my/jar>
Windows
SET SERVER_PORT=7788
java -jar <path/to/my/jar>
将属性放置在./config/application.properties
配置文件中
server.port=7788
并运行:
java -jar <path/to/my/jar>
将属性放置在./config/application.yaml
中
server:
port: 7788
并运行:
java -jar <path/to/my/jar>
将属性放置在./application.properties
中
server.port=7788
并运行:
java -jar <path/to/my/jar>
将属性放置在./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端口。
在Spring Boot的设计哲学中,提供具有较低优先级的属性源(通常打包在归档文件或编码源代码中),并在运行时环境中覆盖它非常有用:
在默认情况下具有自己的观点,但当需求开始与默认设置分歧时,尽快脱离。
SERVER_NAME
到server.name
的转换是通过Relaxed Binding完成的。
此外,您可以通过编程方式配置端口。
对于Spring Boot 2.x.x:
@Configuration
public class CustomContainer implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
public void customize(ConfigurableServletWebServerFactory factory){
factory.setPort(8042);
}
}
对于较旧的版本:
@Configuration
public class ServletConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
container.setPort(8012);
});
}
}
@Configuration
而不是@Controller
?如果是,请更新。 - Luckymvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085
线索位于:
spring-boot.run.jvmArguments
。 - mapm-Dspring-boot.run.arguments
可用于 Spring Boot 3。 - Marco Sulla''
也是有效的 - 因此mvn spring-boot:run -Drun.jvmArguments=-Dserver.port=8085
可以正常工作。在SB 3.1.1上进行了测试。 - Manuel Jordan你可以在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
如果您正在使用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}
或者(在具有YAML语法的application.yml中)server:
port: ${port:4588}
如果在命令行中传递了-Dport(或-Dserver.port)指定的端口,则会使用该端口。否则,将默认使用4588端口。
如果您想在属性文件中强制指定端口,无论环境变量如何,只需编写:
server.port=8888
application.properties
中包含以下属性。server.port=8080
当您需要以编程方式执行此操作时,您可以在启动时设置它:
System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);
这可能对诸如环境相关端口之类的事情有所帮助。
祝您拥有美好的一天。
System.setProperty("server.port", 80);
是实现相同效果的另一种方式。 - hd1
server.port=8080
。此配置位于org.springframework.boot.autoconfigure.web
下的ServerProperties.class
类中。 - Atif