Spring Boot启动时自动打开Swagger UI页面的实现方法(IntelliJ)
Spring Boot启动自动打开Swagger UI的实现方法
一、通过IntelliJ IDEA配置(无需改代码)
这是最适合你的方案,社区版完全支持:
- 点击右上角运行按钮旁的下拉菜单,选择「Edit Configurations」
- 找到你的Spring Boot应用配置,切换到Startup/Connection标签页
- 在「Before launch」区域,点击「+」号选择「Run External Tool」,再点击「+」新建工具:
- 名称随便填,比如「Open Swagger UI」
- 程序路径:Windows填
cmd.exe,Mac填open,Linux填xdg-open - 参数:Windows填
/c start http://localhost:8080/swagger-ui.html,Mac/Linux直接填http://localhost:8080/swagger-ui.html - 工作目录选项目根目录即可
- 保存配置后,启动项目时IDE会自动帮你打开Swagger页面
二、代码/脚本实现(跨环境通用)
如果需要脱离IDE也能自动打开,或者团队统一配置,可以用以下方式:
1. 自定义监听类(你的方案完全合法)
只要控制只在开发环境生效,就不会有问题,避免生产环境触发:
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.awt.*; import java.net.URI; @Component public class SwaggerAutoOpenListener implements ApplicationListener<ApplicationReadyEvent> { private final Environment env; public SwaggerAutoOpenListener(Environment env) { this.env = env; } @Override public void onApplicationEvent(ApplicationReadyEvent event) { // 仅在开发环境执行 for (String profile : env.getActiveProfiles()) { if ("dev".equals(profile)) { try { String port = env.getProperty("server.port", "8080"); Desktop.getDesktop().browse(new URI("http://localhost:" + port + "/swagger-ui.html")); } catch (Exception e) { e.printStackTrace(); } break; } } } }
注意:如果部署到无桌面环境的服务器,这段代码会报错,所以环境判断一定要加。
2. 启动脚本配合
Spring Boot本身没有内置的自动打开浏览器配置项,但可以写启动脚本:
- Windows(bat脚本):
java -jar your-spring-boot-app.jar start http://localhost:8080/swagger-ui.html
- Mac/Linux(sh脚本):
java -jar your-spring-boot-app.jar & sleep 5 # 等应用启动完成 open http://localhost:8080/swagger-ui.html # Linux换成xdg-open
总结
你之前见过的自动打开场景,大概率是用了IDE的配置方案,这种无需改代码更省心;你现在用的自定义代码方案也是正确的,只要做好环境隔离就不用担心问题。
内容的提问来源于stack exchange,提问作者SillyQuestion
相关产品推荐
相关产品推荐

