Springboot2-修改应用启动端口和访问路径

本文介绍如何使用application.properties及application.yml配置文件来设置Spring Boot应用的基本属性,如端口和上下文路径。通过示例展示了具体的配置方法。

一、application.properties配置文件

server.port=8081
server.context-path=/demo1

 

二、application.yml配置文件

server:
    port:8081
    context-path:/demo1

浏览器访问方式:http://localhost:8081/demo1/action-name

<think> 我们参考了多个引用,其中引用[1]、[3]、[4]提供了在Spring Boot项目启动时打印端口地址的方法。主要思路是:在Spring Boot应用启动后,通过Environment对象获取配置的端口号(server.port)上下文路径(server.servlet.context-path),然后拼接成访问地址并打印。 步骤: 1. 启动Spring Boot应用,获取ConfigurableApplicationContext对象。 2. 从ConfigurableApplicationContext中获取Environment对象。 3. 使用Environment对象的getProperty方法获取server.portserver.servlet.context-path属性。 4. 注意:context-path可能为空,所以需要设置默认值(空字符串)。 5. 打印访问地址。 根据引用[1][4]的示例代码,我们可以编写如下代码: 代码示例: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; @SpringBootApplication public class Application { public static void main(String[] args) { // 启动Spring Boot应用 ConfigurableApplicationContext context = SpringApplication.run(Application.class, args); // 获取Environment实例 Environment env = context.getEnvironment(); // 获取端口号,默认值设置为8080(可选,但通常不需要,因为Spring Boot默认就是8080) String serverPort = env.getProperty("server.port", "8080"); // 获取上下文路径,如果没有配置则使用空字符串 String contextPath = env.getProperty("server.servlet.context-path", ""); // 打印启动信息 System.out.println("\n\n===========> 系统启动成功!访问地址:http://localhost:" + serverPort + contextPath); } } ``` 注意: - 如果配置文件中没有设置server.port,则使用默认值8080(这里我们显式设置了默认值,但实际上Environment.getProperty方法在不设置默认值时,如果配置不存在会返回null,所以设置默认值更安全)。 - 上下文路径属性名:在Spring Boot 2.x中,通常使用`server.servlet.context-path`(注意是使用`-`分隔的,但Properties中也可以使用`.`,实际上在配置文件里两种写法都可以,但使用Environment对象获取时,属性名中的点(.)横线(-)在配置中是等价的,但一般我们使用点分隔的形式作为key)。不过,根据引用[1][4],他们使用的是`server.servlet.context-path`。在代码中,我们使用字符串传递即可。 另一种写法(不设置默认值): ```java String serverPort = env.getProperty("server.port"); if (serverPort == null) { serverPort = "8080"; // 因为Spring Boot默认端口是8080,所以如果没有配置,我们也可以手动设为8080 } String contextPath = env.getProperty("server.servlet.context-path"); if (contextPath == null) { contextPath = ""; } ``` 但是,更简洁的方式是直接在getProperty方法中设置默认值,如上面的示例代码。 效果: 启动项目后,控制台会输出类似如下信息: ``` ===========> 系统启动成功!访问地址:http://localhost:8080 ``` 或者如果配置了上下文路径: ``` ===========> 系统启动成功!访问地址:http://localhost:8080/myapp ``` 另外,引用[3]提到了在配置文件中设置端口号的方法,比如在application.yml或application.properties中设置。但是打印不需要修改配置文件,只是说明配置的来源。 因此,我们只需要在启动类(通常是带有@SpringBootApplication注解的类)的main方法中添加上述代码即可。 注意:如果使用Spring Boot的Actuator等组件,可能有更优雅的方式,但上述方法简单直接,适用于大多数场景。 引用[2]提到多端口启动,但用户问题只关心打印端口地址,所以我们不展开。 根据要求,生成相关问题: §§相关问题§§ 1. 如何在Spring Boot中自定义启动信息(例如打印额外的配置信息)? 2. 如何修改Spring Boot的默认端口上下文路径? 3. Spring Boot的Environment对象还能获取哪些配置信息? 4. 如何在Spring Boot启动后执行一些初始化操作(比如打印信息)? </think>在 Spring Boot 项目启动时打印访问地址端口号,可以通过以下步骤实现: ### 实现方法 ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; @SpringBootApplication public class Application { public static void main(String[] args) { // 1. 启动Spring Boot应用 ConfigurableApplicationContext context = SpringApplication.run(Application.class, args); // 2. 获取Environment实例 Environment env = context.getEnvironment(); // 3. 获取端口号(若未配置则默认8080) String port = env.getProperty("server.port", "8080"); // 4. 获取上下文路径(若未配置则默认为空) String contextPath = env.getProperty("server.servlet.context-path", ""); // 5. 打印访问地址 System.out.println("\n\n===========> 应用启动成功!访问地址: http://localhost:" + port + contextPath); } } ``` ### 关键说明 1. **端口获取逻辑**: - 通过 `env.getProperty("server.port")` 读取配置 - 未配置时使用默认值 `8080`(Spring Boot默认端口2. **上下文路径处理**: - 通过 `env.getProperty("server.servlet.context-path")` 读取 - 未配置时默认为空字符串(即无额外路径) 3. **效果示例**: ```bash ===========> 应用启动成功!访问地址: http://localhost:8080 ``` 若配置 `server.servlet.context-path=/api`: ```bash ===========> 应用启动成功!访问地址: http://localhost:8080/api ``` ### 配置方式(可选) 在 `application.properties` 中自定义: ```properties # 设置端口号 server.port=8888 # 设置上下文路径 server.servlet.context-path=/myapp ``` 或在 `application.yml` 中: ```yaml server: port: 8888 servlet: context-path: /myapp ``` ### 注意事项 1. **打印时机**:此代码在应用**完全启动后**执行 2. **依赖注入**:需通过 `ConfigurableApplicationContext` 获取 `Environment` 对象 3. **安全提示**:生产环境建议隐藏此类信息[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值