Spring boot web项目修改端口号

本文介绍如何在SpringBoot项目中更改默认的web服务端口8080。通过在application.properties文件中设置server.port参数可以轻松实现端口的自定义配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring boot项目默认web项目的端口号是8080,如果需要修改端口号,再application.properties通过server.port指定端口即可。如下图所示,即修改默认端口为8888了


<think>嗯,用户现在问的是Spring Boot项目如何配置端口。首先,我需要回忆一下Spring Boot的常见配置方式。记得主要有两种方法:通过application.properties或者application.yml文件,还有可能通过编程方式或者命令行参数。 用户之前问过关于NostedIOException的问题,可能是个刚开始学习Spring Boot的开发者,遇到异常或者配置问题。现在转向配置端口,可能是项目启动时端口冲突,或者想了解如何修改默认端口。需要详细但简洁地解释不同的配置方法,避免使用复杂术语,确保用户能理解。 首先,应该先介绍默认端口是8080,然后分点说明每种配置方式。比如在application.properties里设置server.port=8081,或者在YAML里用server: port: 8081。然后提到命令行参数,比如--server.port=8082,这样在运行jar的时候可以动态指定。还有随机端口,这在测试时可能有帮助。 接下来,用户可能需要知道如何同时支持HTTP和HTTPS,这时候需要配置不同的连接器。这时候需要提到EmbeddedServletContainerCustomizer,不过注意Spring Boot 2.x之后可能类名有变化,应该用WebServerFactoryCustomizer,并添加Tomcat的Connector。这部分需要示例代码,但要注意正确性。 另外,随机端口的应用场景,比如在微服务中避免端口冲突,这时候可以通过Environment获取实际端口号。可能需要给出一个例子,比如在启动后打印端口号。 还要考虑用户可能遇到的问题,比如配置没生效,这时候需要提醒检查配置文件的位置是否正确,比如是否在src/main/resources下,或者是否有多个配置文件导致冲突。另外,不同的激活环境,比如application-dev.properties是否需要指定active profile。 另外,用户可能对YAML和Properties文件的区别不太清楚,可以稍微解释一下两者的使用场景,但不需要太深入。主要确保步骤清晰,示例正确。 总结下来,回答的结构应该是:默认端口,配置文件配置,命令行配置,随机端口,多端口配置,以及注意事项。这样分点说明,用户容易跟随。同时要提供代码示例,比如配置文件片段和Java配置类,但需要确认示例的正确性,比如在Spring Boot 2.x中EmbeddedServletContainerCustomizer是否被替换了,应该使用WebServerFactoryCustomizer。 另外,用户可能对术语不太熟悉,比如EmbeddedServletContainerCustomizer,需要给出正确的包路径,比如org.springframework.boot.web.server,避免用户找不到类。同时,示例中的TomcatConnectorCustomizer可能需要导入正确的类,比如来自Tomcat的包。 最后,要确保所有步骤都是当前Spring Boot版本(比如2.x或3.x)适用的,避免给出过时的信息。可能需要提示用户如果使用旧版本,类名可能不同,但建议使用最新版本的方法。</think>在 Spring Boot 项目中配置端口有以下多种方式,具体选择取决于实际需求: --- ### 一、默认端口 Spring Boot 默认使用 **`8080`** 端口。如果未显式配置,应用会直接启动在 8080 端口。 --- ### 二、配置文件修改端口 #### 1. `application.properties` 配置 ```properties # 直接指定固定端口 server.port=8081 # 随机端口(范围 0~65535) # server.port=0 ``` #### 2. `application.yml` 配置 ```yaml server: port: 8081 # 固定端口 # port: 0 # 随机端口 ``` --- ### 三、命令行动态配置 通过启动命令临时覆盖配置(优先级最高): ```bash java -jar your-app.jar --server.port=8082 ``` --- ### 四、多端口监听(HTTP + HTTPS) 若需同时监听多个端口(例如 HTTP 和 HTTPS),需通过编程方式配置: ```java import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MultiPortConfig { @Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() { return factory -> { // 主端口(HTTP) factory.setPort(8080); // 附加端口(如管理接口) factory.addAdditionalTomcatConnectors(createAdditionalConnector()); }; } private Connector createAdditionalConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setPort(8081); // 第二个端口 return connector; } } ``` --- ### 五、随机端口 + 获取实际端口 在日志中查看随机分配的端口: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; @SpringBootApplication public class Application { @Autowired private Environment env; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @EventListener public void onApplicationEvent(ApplicationReadyEvent event) { String port = env.getProperty("local.server.port"); System.out.println("应用运行在端口: " + port); } } ``` --- ### 六、优先级顺序 配置生效的优先级(从高到低): 1. 命令行参数 (`--server.port=xxx`) 2. 系统环境变量 (`SERVER_PORT`) 3. 配置文件 (`application.properties`/`application.yml`) 4. 默认值 (`8080`) --- ### 七、常见问题排查 - **端口冲突**:检查 `Address already in use` 错误,使用 `netstat -ano | findstr :端口号`(Windows)或 `lsof -i :端口号`(Linux/Mac)查找占用进程。 - **配置未生效**:检查配置文件是否位于 `src/main/resources` 目录,且文件名正确。 - **多环境配置**:可通过 `application-{profile}.properties` 为不同环境(如 dev/test)配置不同端口。 如果有特殊需求(如 Kubernetes 动态分配端口),可结合 `server.port=${PORT:8080}` 格式,优先读取环境变量值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值