文章目录
- 前言
- 一、先看整体项目树
- 二、根目录文件逐个讲解
- 1. pom.xml ⭐【整个项目最重要文件】
- 2. target 文件夹 🚨【千万不要在这里写代码!】
- 3. mvnw / mvnw.cmd
- 4. .gitignore
- 5. .idea
- 三、src目录:后端开发主战场
- 3.1 src/main/java 【Java代码层】
- ✅ BadHabbitApplication.java —— 项目启动类
- ✅ entity 实体包(模型层)
- ✅ mapper 数据访问层(DAO层)
- ✅ controller 控制器(接口层)
- ✅ config 配置包
- 3.2 src/main/resources 资源文件夹
- ✅ application.yml ⭐核心配置文件
- ✅ mapper 文件夹
- ✅ static 静态资源文件夹
- ✅ templates
- 四、完整请求链路,带你打通前后端流程
- 五、新手开发规范总结(避坑指南)
- 六、写在最后
前言
很多刚学Java后端的同学,打开别人的SpringBoot项目直接一脸懵:.idea、src、target、controller、mapper……一堆文件夹密密麻麻,不知道哪个能改、哪个碰都不能碰!
不知道代码写在哪?
分不清接口、数据库代码放哪里?
新建功能不知道该创建什么类?
今天拿一套最基础、最常用的SpringBoot + MyBatis实战项目带大家拆解目录结构。看完这篇,你拿到任何同款后端项目,一眼看懂每个文件夹的职责,告别“瞎复制代码”!
项目架构:标准MVC后端项目,提供接口给前端页面/小程序使用
一、先看整体项目树
bad_habbit # 项目根文件夹 ├── .idea # IDEA编辑器配置 ├── .mvn # maven自动化构建相关 ├── src # 【核心!源代码目录,我们99%代码写在这里】 │ └── main │ ├── java # Java业务代码 │ │ └── com.example.bad_habbit │ │ ├── config # 全局配置类 │ │ ├── controller # 接口控制器(前后端交互入口) │ │ ├── entity # 数据库实体类 │ │ ├── mapper # 数据库操作接口 │ │ └── BadHabbitApplication # 项目启动类 │ └── resources # 配置文件、SQL映射、静态资源 │ ├── application.yml # SpringBoot核心配置文件 │ ├── mapper # Mybatis SQL文件 │ ├── static # 静态页面(html/js/css/图片) │ └── templates # 模板页面(较少用) ├── test # 单元测试目录 ├── target # 编译输出文件夹 ├── pom.xml # Maven项目核心配置 ├── .gitignore # Git忽略配置 ├── mvnw/mvnw.cmd # Maven启动脚本二、根目录文件逐个讲解
1. pom.xml ⭐【整个项目最重要文件】
Maven项目的灵魂!
作用:管理项目所有依赖包。
你项目想要连接MySQL、使用MyBatis、SpringBoot框架,全部都需要在这个文件引入依赖。
简单理解:你想要什么工具,就在pom.xml里面“申请”,Maven自动帮你下载对应的jar包。
2. target 文件夹 🚨【千万不要在这里写代码!】
执行项目编译后自动生成。
Java源代码会被编译成.class文件,最终打包的jar包也在这里。
程序真正运行的时候,执行的就是target里面编译后的代码。
常见坑:修改代码不生效,很多人误改target内文件,重启项目直接覆盖!
附带:目录里
hs_err_pidxxx.log文件:JVM崩溃日志,如果程序莫名闪退,可以打开日志排查问题。
3. mvnw / mvnw.cmd
Maven包装脚本。
正常开发我们电脑安装了Maven,基本用不到;
如果别人电脑没有配置Maven,可以直接运行这个脚本自动下载maven构建项目。
mvnw:Mac/Linux系统mvnw.cmd:Windows系统
4. .gitignore
Git版本控制忽略清单。
写在这里的文件/文件夹,执行代码提交时,不会上传到Gitee/GitHub。
典型配置:忽略target、.idea缓存文件,避免上传大量无用缓存。
5. .idea
IDEA开发工具自动生成的文件夹,保存你的界面布局、运行配置、代码索引。
和业务代码无关,上传代码一般都会忽略。
三、src目录:后端开发主战场
src= source(源代码),我们日常写业务代码全部在这个文件夹!
分为两大块:
src/main:正式环境运行的业务代码src/test:单元测试代码(写测试用例,测试接口、方法)
3.1 src/main/java 【Java代码层】
包路径:com.example.bad_habbit
✅ BadHabbitApplication.java —— 项目启动类
整个SpringBoot项目唯一入口!
带有@SpringBootApplication核心注解。
右键运行这个类的main方法,后端服务直接启动,开启端口等待前端发送请求。
✅ entity 实体包(模型层)
存放实体类,比如示例里Habbit.java
规则:一个类对应数据库一张表,类的属性对应数据表字段。
作用:数据库查询出来的数据,全部封装到实体对象中,方便代码读取、传递数据。
别名:POJO、实体、数据表映射类。
✅ mapper 数据访问层(DAO层)
里面HabbitMapper是Java接口
职责:定义操作数据库的方法(新增、删除、修改、查询)。
⚠️重点:接口不写SQL实现,SQL语句统一写在 resources/mapper对应的xml文件,由MyBatis框架自动实现。
✅ controller 控制器(接口层)
前后端交互的大门!
前端网页、小程序、APP发起http请求,都会访问Controller里面定义的接口地址。
简单流程:
接收前端请求 → 调用mapper操作数据库 → 查询/修改数据 → 返回数据给前端页面
小贴士:正规企业项目还会多出一层
service(业务层),把复杂业务逻辑抽离出来。小型项目可以简化,Controller直接调用Mapper。
✅ config 配置包
存放所有自定义配置类
示例里CorsConfig跨域配置:
前端页面和后端端口不一致时,浏览器会拦截跨域请求,这个配置放开限制,让前端正常调用后端接口。
后续还可以在这里添加:登录拦截器、MyBatis分页配置、线程池配置等。
3.2 src/main/resources 资源文件夹
不会编译成class文件,打包时直接复制到项目中。
✅ application.yml ⭐核心配置文件
SpringBoot全局配置中心!
常见配置内容:
- 后端服务启动端口(默认8080)
- MySQL数据库地址、账号、密码
- MyBatis配置、日志级别、文件上传大小限制等
✅ mapper 文件夹
存放MyBatis映射文件HabbitMapper.xml
和mapper包下的接口一一对应,所有SQL语句(select/insert/update/delete)全部写在这里。
✅ static 静态资源文件夹
SpringBoot内置静态资源目录!
html网页、js、css、图片都可以放这里。
示例中的index.html前端页面,启动项目后直接通过http://localhost:8080/index.html访问。
✅ templates
Thymeleaf模板文件夹。如果不用模板引擎开发页面,这个文件夹可以闲置。
四、完整请求链路,带你打通前后端流程
看完目录,很多人还是不知道代码怎么联动,给大家梳理一条完整流程:
前端打开 index.html → 网页发送请求GET /habbit/list
- HabbitController 接收前端请求
- Controller调用 HabbitMapper 里面的查询方法
- MyBatis加载 HabbitMapper.xml 中定义的查询SQL
- 程序连接MySQL数据库执行SQL
- 查询到的数据自动封装进 Habbit 实体对象
- Controller把数据返回前端,网页渲染展示数据
一条请求,走完所有分层!这下各个包的作用彻底串起来了。
五、新手开发规范总结(避坑指南)
- 新增数据表 → 创建entity实体类
- 需要操作这张表 → 创建Mapper接口 + Mapper.xml,编写SQL
- 需要给前端提供访问地址 → 在Controller新增接口
- 通用全局功能(跨域、拦截器)写到config
- target、.idea 不要手动修改、不要上传代码仓库
六、写在最后
很多新手学习后端,一上来就死磕各种框架源码,却连项目目录结构都搞不清楚。
地基没打好,写代码只会东拼西凑,遇到报错无从下手。
搞懂目录分层思想,不只是SpringBoot,后续学习微服务、SpringCloud,分层思想都是通用的!
如果文章对你有帮助,点赞收藏,后续持续更新SpringBoot实战小案例!
配套详细目录解析博文:SpringBoot4 + MyBatis 前后端分离实战|从零实现坏习惯管理系统,支持局域网手机访问CRUD
你们刚学后端的时候,哪个文件夹最让你迷惑?评论区留言!