spring boot 修改默认端口号和contextpath

本文介绍了SpringBoot中如何通过application.properties文件配置访问端口及路径,并分享了实践过程中的常见问题及解决办法。

      最近在学习spring boot,网上大把教程,学完当然就要实操一下代码啦。新手上路,多多指教!

      spring boot 的 application.properties 文件专门用来填写一些配置的,例如访问端口、数据库访问......

   从官网下一个demo,自己建一个controller:

 

然后,打开application.properties文件。

 

     由上图,可以看到配置访问端口为8099,路径为test。这时候,访问地址不是“ http://localhost:8099/  ”,而是“ http://localhost:8099/test  ”了。(提示:有的教程是写 server.context-path=/test ,我试了但开发工具会报错,根据提示写成server.servlet.context-path 就没事了)

来,跑一下:

可以看到,访问的端口就成了8099,context-path成了“ /test ”。

好,来浏览器访问一下:

咦,怎么就不行了呢?哦,原来是端口号写错了(项目改成8099),再来:

呀,这次端口改对了,但访问路径(context-path)又错了(应该是“  /test  ”)。

改好,再来:

这次好了。端口、访问路径都对了。

 

总结:

配置context-path和端口号,只需要在application.properties文件那里写就行了,项目一启动就生效了。这时候就可以按你所设定的路径来访问。

 

参考原文:http://www.cnblogs.com/sam-uncle/p/8796746.html

 

原文中的知识点引申部分,不是很理解:application.properties文件是随便放的吗?那么,spring boot怎么找到它的?

新手上路,希望路过的大佬帮小弟解答一下,不胜感激。

<think>我们被要求查看Spring Boot项目启动后的端口号。根据引用内容,我们知道可以通过配置文件(application.properties或application.yml)或命令行参数设置端口号。但用户需要的是项目启动后如何查看实际使用的端口号。 方法总结: 1. 通过启动日志查看:Spring Boot启动时会在控制台打印端口号信息。 2. 通过Actuator端点查看(如果项目已集成Spring Boot Actuator)。 3. 通过编写代码在启动后输出端口号(适用于开发调试)。 具体步骤: ### 方法1:查看启动日志 Spring Boot项目启动时,默认会在控制台输出类似以下的信息: ``` Tomcat started on port(s): 8080 (http) with context path '' ``` 或者 ``` Netty started on port(s): 8080 ``` 具体端口号会在这里显示。 ### 方法2:使用Actuator端点(需要添加依赖) 1. 在项目中添加Actuator依赖(Maven): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` 2. 在`application.properties`中暴露`env`端点(Spring Boot 2.x): ```properties management.endpoints.web.exposure.include=env ``` 3. 启动项目后访问:`http://localhost:当前端口/actuator/env`,在返回的JSON中搜索`server.port`。 注意:如果不知道当前端口,可以先使用默认端口8080(或通过方法1查看),或者通过方法3在启动时输出。 ### 方法3:编程方式获取并输出端口号 可以在Spring Boot启动后获取端口号并打印。创建一个`CommandLineRunner`或`ApplicationRunner`的Bean: ```java import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Bean public CommandLineRunner commandLineRunner() { return args -> { // 获取当前端口号 String port = System.getProperty("server.port"); // 或者从环境变量中获取(更可靠) // String port = env.getProperty("local.server.port"); System.out.println("当前服务端口: " + port); }; } } ``` 注意:上述代码中直接使用`System.getProperty("server.port")`可能无法获取到,因为命令行参数设置的端口可能不在系统属性中。更可靠的方法是从环境变量中获取: ```java import org.springframework.core.env.Environment; @Autowired private Environment env; // 在CommandLineRunner中使用 @Bean public CommandLineRunner commandLineRunner(Environment env) { return args -> { String port = env.getProperty("local.server.port"); System.out.println("当前服务端口: " + port); }; } ``` ### 方法4:通过外部工具查看端口占用情况(验证) 如果项目已经启动,可以通过操作系统的命令查看端口占用情况,从而推断Spring Boot使用的端口。 在Windows中: ```cmd netstat -ano | findstr "LISTENING" | findstr "端口号" ``` 或者查看所有被占用的端口,然后根据进程名(通常为java)查找。 在Linux中: ```bash netstat -tulnp | grep java ``` ### 总结 - **推荐方法**:查看启动日志(方法1)是最直接的方式。 - **辅助方法**:若日志被覆盖或无法查看,使用方法3(编程方式输出)或方法2(Actuator)。 - **外部验证**:使用方法4验证端口占用。 根据引用[3],如果端口被占用,启动时会报错,此时需要更换端口或停止占用端口的进程。 --- §§相关问题§§ 1. 如何修改Spring Boot项目的默认端口号? 2. Spring Boot Actuator还能提供哪些项目运行信息? 3. 如何在Spring Boot启动失败时快速定位端口冲突问题? </think> 要查看Spring Boot项目启动后的实际端口号,可通过以下几种方法实现(按推荐顺序排列): ### 方法1:查看启动日志(最直接) Spring Boot启动时会在控制台自动打印端口信息: ```log 2023-XX-XX XX:XX:XX.XXX INFO 12345 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : ✅ Tomcat started on port(s): 8080 (http) with context path '' ``` 关键信息: - **端口号**:`8080`(示例值) - **协议类型**:`http`/`https` - **容器类型**:Tomcat/Netty/Jetty[^1] > 此信息在启动日志中**必定存在**,建议优先查看控制台输出。 --- ### 方法2:通过Actuator端点(需配置) 1. **添加依赖**(pom.xml): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` 2. **启用端口端点**(application.properties): ```properties management.endpoints.web.exposure.include=env management.endpoint.env.enabled=true ``` 3. **访问端点获取端口**: ```bash curl http://localhost:当前端口/actuator/env | grep server.port ``` 返回结果示例: ```json { "name": "server.port", "value": 8080 // 实际端口号 } ``` --- ### 方法3:编程方式获取(开发调试) 在任意Spring Bean中注入环境变量获取端口: ```java import org.springframework.core.env.Environment; @RestController public class PortController { @Autowired private Environment env; @GetMapping("/port") public String getPort() { // 获取当前运行端口 String port = env.getProperty("local.server.port"); return "当前服务端口: " + port; } } ``` 访问 `http://localhost:端口/port` 即可显示[^2]。 --- ### 方法4:通过系统命令验证(通用) 若已知大概端口范围,使用系统命令验证: - **Windows**: ```cmd netstat -ano | findstr :8080 ``` - **Linux/macOS**: ```bash lsof -i :8080 | grep LISTEN ``` 输出示例: ``` TCP 0.0.0.0:8080 LISTENING 12345 ``` 其中 `12345` 是Java进程PID[^3]。 --- ### 端口冲突解决方案 若启动时报错 `Port XXXX was already in use`: 1. 终止占用进程: ```bash kill -9 $(lsof -t -i:8080) # Linux/macOS taskkill /F /PID 12345 # Windows ``` 2. 动态指定新端口: ```bash java -jar app.jar --server.port=0 # 随机端口 ``` > 💡 推荐优先级:启动日志 > Actuator端点 > 编程获取 > 系统命令 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值