文章目录
技术栈版本(aka 案发现场信息)
- SpringBoot:3.4.3(那个说好向下兼容但总搞事情的版本)
- springdoc-openapi:2.8.5(官方文档:你直接copy代码就行啦~)
案发经过:从入门到弃坑只需5分钟
根据Spring官方指南 ,我优雅地粘贴了依赖:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.5</version>
</dependency>
然后自信满满地访问/swagger-ui.html
——结果收获了一个404大礼包(此处应有《黑人问号.jpg》)
诡异物证:
v3/api-docs
接口正常得像个模范生
- 但UI界面就像被黑洞吞噬了一样
- 咋?你还“犹抱琵琶半遮面”上了?
玄学调试环节
我灵机一动,既然是找不到资源,那我只要自己知道资源的位置,手动加一个映射不就好了嘛👆🤓
于是让AI生成了这段咒语:
@Configuration
public class SwaggerConfiguration implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/")
.resourceChain(false);
}
}
ok,有了这段代码,Swagger-ui终于露出了“庐山真面目”
魔幻现实展开:
秉持“控制变量原则”,我打算看看究竟是不是这个配置类挽救了我的项目,于是:
-
删掉配置类 → 重新构建 → 居然还能访问!?
-
为了代码简洁,我删掉了配置类:
git add .
git commit -m "又解决一个玄学bug"
-
第二天:同样的代码,再次404
仿佛昨晚的顺利只是幻觉
走近科学之缓存三连击
我猜想一定是万恶的缓存从中作祟☝️️🤓!
于是开展实验
第一幕:浏览器缓存的背刺
我在“干净”地状况下
- 启动不带手动资源映射的后端
- edge浏览器访问、chrome浏览器访问,均404
- 添加资源映射,再次启动后端
- edge浏览器访问,页面产生
- 关闭后端,删去后端的资源映射,重新生成并运行
- 打开edge浏览器,页面依然存在
操作步骤 | 预期结果 | 实际结果 |
---|---|---|
清缓存+重启服务 | 404警告 | 薛定谔的Swagger |
换浏览器访问 | 必然404 | 难道两浏览器竟共享缓存?! |
第二幕:内存缓存的阴谋
发现资源来自memory cache
后:
- 虔诚地重启电脑
- 焚香沐浴重新启动服务
- 结果…UI竟然还在!?
最终回:磁盘缓存的绝杀
在经历了24小时贤者时间后:
- 服务启动 → 浏览器访问 → 熟悉的404归来
- 此刻终于领悟:原来缓存也会闹脾气,今天过期明天见
血泪总结(打工人速记版)
✅ 终极解决方案:把那个配置类焊死在项目里就完事了
❌ 试图理解框架行为 → 容易陷入哲学思考
💡 缓存系统:当代程序员的新型薛定谔实验装置
(欢迎各位大佬在评论区教我做人,救救这个被(可能是)缓存玩弄的菜狗😭)