尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring Boot资源路径与ClassPathResource详解
Spring Boot资源路径与ClassPathResource详解一、ClassPathResource是什么代码ClassPathResourceresourcenewClassPathResource(template/tableName.xlsx);拆分ClassPathResource ClassPath Resource含义从Java程序运行时的类路径classpath中查找资源文件。常用于读取Excel模板配置文件XML文件JSON文件图片等项目内部资源二、什么是classpathclasspath中文类路径简单理解Java程序运行时寻找类和资源文件的位置。Spring Boot项目结构项目 | |-- src | |-- main | |-- java | |-- resources其中java目录存放Java代码例如Controller.java Service.java Entity.javaresources目录存放项目资源文件例如application.yml Excel模板 XML文件 图片 JSON文件三、resources为什么叫classpath项目启动后Maven会把src/main/resources复制到target/classes例如项目中src/main/resources/template/user.xlsx编译后target/classes/template/user.xlsx运行时target/classes就是classpath。所以classpath target/classes resources目录四、template/为什么是在IDEA项目里面代码newClassPathResource(template/user.xlsx);这里的template/不是浏览器路径也不是http://localhost:8080/template/user.xlsx而是后端项目resources目录下的文件夹例如项目src/main/resources | |-- template | |-- user.xlsx代码newClassPathResource(template/user.xlsx);Spring会寻找classpath/template/user.xlsx实际位置target/classes/template/user.xlsx五、浏览器和classpath的区别浏览器访问http://localhost:8080/download/template表示访问后端接口浏览器不知道template/user.xlsx这个文件。完整流程浏览器 | | HTTP请求 ↓ Controller | | ClassPathResource读取文件 ↓ resources/template/user.xlsx | | 输出文件流 ↓ 浏览器下载文件六、为什么模板文件放resources因为模板属于系统固定资源例如Excel导入模板Word合同模板邮件模板特点开发人员维护 不会频繁变化 跟项目一起发布所以放resources七、Spring Boot常见资源目录1. resources根目录结构resources | |-- application.yml用途配置文件读取newClassPathResource(application.yml);2. template目录结构resources | |-- template | |-- user.xlsx用途模板文件例如Excel模板Word模板邮件模板读取newClassPathResource(template/user.xlsx);3. static目录结构resources | |-- static | |-- css |-- js |-- images用途静态资源例如CSSJavaScript图片浏览器可以直接访问localhost:8080/logo.png4. public目录结构resources/public作用和static类似。用于公开访问的静态文件5. templates目录注意template和templates不是一个东西。templates用于后端页面模板例如Thymeleafresources/templates/user.htmlControllerreturnuser;Spring寻找templates/user.html6. mapper目录结构resources | |-- mapper | |-- UserMapper.xml用途MyBatis XML映射文件配置mybatis:mapper-locations:classpath:mapper/*.xml表示从resources/mapper目录寻找xml文件7. db目录结构resources | |-- db | |-- schema.sql |-- data.sql用途数据库初始化脚本八、classpath:是什么意思经常看到mybatis:mapper-locations:classpath:mapper/*.xmlclasspath表示从类路径开始查找也就是resources目录开始查找例如classpath:mapper/UserMapper.xml实际位置src/main/resources/mapper/UserMapper.xml九、ClassPathResource和File路径区别1. ClassPathResource代码newClassPathResource(template/test.xlsx);查找项目内部资源位置resources目录适合模板文件配置文件固定资源特点跟随项目打包2. File文件路径例如FilefilenewFile(/home/bes/upload/test.zip);查找服务器磁盘例如/home/bes/upload适合用户上传文件临时文件业务数据文件特点运行过程中动态产生十、为什么上传文件不用ClassPathResource上传文件例如202605.zip属于用户产生的数据不能放resources原因项目重新打包jar重新生成可能导致文件丢失所以上传文件保存服务器磁盘目录例如/home/bes/upload | |--202605 | |--tableName | |--xxx.zip十一、结合项目中的两个场景场景1下载Excel模板文件resources | |--template | |--config.xlsx代码ClassPathResourceresourcenewClassPathResource(template/config.xlsx);特点系统自带 固定文件 开发维护场景2下载用户上传文件用户上传202605.zip保存/home/bes/upload/202605/tableName/读取FileInputStreamFileInputStream特点用户产生 动态文件 数量变化十二、总结记忆ClassPathResource 找项目内部resources中的资源classpath: 从resources目录开始查找File路径 找服务器磁盘上的文件对应关系系统模板文件 ↓ resources/template ↓ ClassPathResource 用户上传文件 ↓ 服务器磁盘目录 ↓ File路径一句话固定的系统资源放resources用ClassPathResource读取动态产生的业务文件放服务器磁盘用File路径读取。
RELATED

相关推荐

设备磁场干扰频发?一文吃透 IEC 61000-4-8 测试等级与合规要点

设备磁场干扰频发?一文吃透 IEC 61000-4-8 测试等级与合规要点

在电磁兼容(EMC)领域,很多设备故障、信号紊乱、仪器数据漂移的问题,根源并非电压电流波动,而是容易被忽视的工频磁场干扰。无论是家用电子设备、工业自动化装置,还是变电站、发电厂的精密仪器,都…

📅 2026/7/12 9:57:44
赣州经济纠纷案件处理中的律师专业方向与服务场景

赣州经济纠纷案件处理中的律师专业方向与服务场景

赣州经济纠纷案件处理中的律师专业方向与服务场景 行业现状与法律服务需求特征 近年来赣州经济活动持续活跃,建设工程、经济合同等纠纷案件数量呈现增长趋势。企业、施工方及业主单位在工程款结算、合同履行等方面常遇法律难题。此类纠纷涉及复杂法律关系&#xff…

📅 2026/7/11 22:46:05
一文看懂!2026年9月PMP考试完整全攻略

一文看懂!2026年9月PMP考试完整全攻略

2026年9月12日PMP考试是第七版旧考纲收官场次,12月起将全面启用第八版新考纲,新增图形案例题、商业环境分值暴涨、备考难度大幅提升。9月这场是难度最低、资料最成熟、通过率最高的黄金上岸窗口,本文从报考条件、报名流程、考点分值、分阶段备…

📅 2026/7/29 15:28:10
MORE NEWS

更多资讯

📰

Wiki.js 实例遥测会收集哪些信息?离线与开发模式下为何不发送

Wiki.js 实例遥测会收集哪些信息?离线与开发模式下为何不发送 【免费下载链接】wiki- Wiki.js | Next Generation Open Source Wiki 项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki- 部署 Wiki.js 时,管理员通常需要回答一个数据合规…

📰

Spring事务传播行为详解与应用实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Beekeeper Studio 开发环境中的 GreengageDB Docker 部署与连接指南

Beekeeper Studio 开发环境中的 GreengageDB Docker 部署与连接指南 【免费下载链接】beekeeper-studio Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows. 项目地址: https://gitcode.com/GitHub_Trending…

📰

2026年能成为TCPING检测的首推平台是哪个?

2026 年在线 TCPing 检测首推平台:www.kkce.com(KKCE 快快测)。原因不是“它也有 TCPing 按钮”,而是它把 TCPing 从“命令行补丁”做成了一层端口级、多运营商、双栈、可下钻的连通性证据。一、TCPing 本来就是为“Ping 骗你”而…

📰

使用 Dub 将 Stripe 自定义客户创建流程与点击归因关联:dubCustomerExternalId 与 dubClickId 元数据实战指南

使用 Dub 将 Stripe 自定义客户创建流程与点击归因关联:dubCustomerExternalId 与 dubClickId 元数据实战指南 【免费下载链接】dub The modern link attribution platform. Loved by world-class marketing teams like Framer, Perplexity, Superhuman, Twilio, Bu…

📰

基于 FastMCP 构建带交互界面的 QR Code MCP App:工具、`ui://` 资源与 CSP 配置实战

基于 FastMCP 构建带交互界面的 QR Code MCP App:工具、ui:// 资源与 CSP 配置实战 【免费下载链接】fastmcp 🚀 The fast, Pythonic way to build MCP servers and clients. 项目地址: https://gitcode.com/GitHub_Trending/fa/fastmcp 导读 本…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬