news 2026/7/30 8:42:30

【小白入门】一张项目结构图搞懂 SpringBoot 后端目录!每个文件夹到底干啥用?再也不懵!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【小白入门】一张项目结构图搞懂 SpringBoot 后端目录!每个文件夹到底干啥用?再也不懵!

文章目录

    • 前言
    • 一、先看整体项目树
    • 二、根目录文件逐个讲解
      • 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项目直接一脸懵:
.ideasrctargetcontrollermapper……一堆文件夹密密麻麻,不知道哪个能改、哪个碰都不能碰!

不知道代码写在哪?
分不清接口、数据库代码放哪里?
新建功能不知道该创建什么类?

今天拿一套最基础、最常用的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

  1. HabbitController 接收前端请求
  2. Controller调用 HabbitMapper 里面的查询方法
  3. MyBatis加载 HabbitMapper.xml 中定义的查询SQL
  4. 程序连接MySQL数据库执行SQL
  5. 查询到的数据自动封装进 Habbit 实体对象
  6. Controller把数据返回前端,网页渲染展示数据

一条请求,走完所有分层!这下各个包的作用彻底串起来了。

五、新手开发规范总结(避坑指南)

  1. 新增数据表 → 创建entity实体类
  2. 需要操作这张表 → 创建Mapper接口 + Mapper.xml,编写SQL
  3. 需要给前端提供访问地址 → 在Controller新增接口
  4. 通用全局功能(跨域、拦截器)写到config
  5. target、.idea 不要手动修改、不要上传代码仓库

六、写在最后

很多新手学习后端,一上来就死磕各种框架源码,却连项目目录结构都搞不清楚。
地基没打好,写代码只会东拼西凑,遇到报错无从下手。
搞懂目录分层思想,不只是SpringBoot,后续学习微服务、SpringCloud,分层思想都是通用的!

如果文章对你有帮助,点赞收藏,后续持续更新SpringBoot实战小案例!


配套详细目录解析博文:SpringBoot4 + MyBatis 前后端分离实战|从零实现坏习惯管理系统,支持局域网手机访问CRUD

你们刚学后端的时候,哪个文件夹最让你迷惑?评论区留言!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 8:41:29

Ubuntu22安装neper4.6.1

参考原文链接:https://neper.info/doc/tutorials/install_ubuntu22.html1、安装相关的依赖sudo apt update && sudo apt install -y cmake g pkg-config libgsl-dev povray asymptote texlive-base texlive-latex-base texlive-fonts-recommended#sudo apt …

作者头像 李华
网站建设 2026/7/30 8:41:25

Veeam配置备份加密策略与灾难恢复实践指南

1. 项目概述:为什么Veeam配置加密备份如此重要?如果你正在管理一个基于Veeam Backup & Replication的数据保护环境,那么配置库、备份作业设置、凭证信息这些核心配置,其重要性绝不亚于你备份的虚拟机或物理服务器数据本身。想…

作者头像 李华
网站建设 2026/7/30 8:35:12

造了一个 Chat BI:让业务人员用自然语言“对话”Excel 数据

https://gitee.com/exterior-and-interior-sha/chat-bi 这东西解决了什么问题 大多数企业内部的数据流转长这样: 业务部门用 Excel 做记录,每天产生几十张表 想查点什么东西 → 提需求给 IT → IT 排期写 SQL → 几天后拿到结果 或者业务人员自己学 SQL,但能写 JOIN 的业务…

作者头像 李华
网站建设 2026/7/30 8:32:10

VMware虚拟机安装部署指南:从环境准备到功能验证

这次我们来看 VMware 虚拟机的安装部署。如果你需要在单台电脑上运行多个操作系统、测试软件兼容性或者搭建隔离的开发环境,VMware Workstation Pro 是个不错的选择。它支持 Windows 和 Linux 宿主系统,可以直接在现有系统上安装,不需要额外硬…

作者头像 李华
网站建设 2026/7/30 8:31:34

SSH密钥登录原理与安全配置实战指南

1. 从“远程登录”说起:为什么SSH是工程师的必备技能 如果你用过Windows的远程桌面,或者听说过Telnet,那你对“远程登录”这个概念应该不陌生。简单说,就是在一台电脑上,操作另一台电脑。听起来很酷,对吧&a…

作者头像 李华
网站建设 2026/7/30 8:29:58

知网普刊投稿全流程与计算机类论文发表技巧

1. 知网普刊投稿全流程解析 知网作为国内权威的学术资源平台,其收录的普通期刊(简称"普刊")是广大科研工作者发表学术成果的重要渠道。与核心期刊相比,普刊具有审稿周期短、录用率较高的特点,特别适合需要快…

作者头像 李华