Spring MVC 项目结构学习笔记

一、项目整体架构

本项目采用 Spring Boot + Spring MVC + MyBatis 的三层架构设计:

Controller(控制层)→ Service(业务层)→ Mapper(数据层)→ 数据库

二、各包功能说明

  1. controller(控制层)

作用:负责接收前端请求,调用业务层处理,并返回结果。

特点:不写业务逻辑,不操作数据库。

示例:DeptController、EmpController

  1. service(业务层)

作用:处理核心业务逻辑。

组成:接口 + 实现类(impl)。

示例:DeptService、DeptServiceImpl

  1. mapper(持久层)

作用:与数据库交互,执行 SQL 语句。

技术:MyBatis

示例:DeptMapper、EmpMapper

  1. pojo(实体类层)

作用:封装数据模型。

组成:

  • Dept / Emp:对应数据库表

  • PageBean:分页封装

  • Result:统一返回结果

  1. Application(启动类)

作用:项目入口,启动 Spring Boot 应用。

示例:TiliasnewApplication

三、系统执行流程

  1. 浏览器发送请求

  2. DispatcherServlet 接收请求

  3. Controller 接收并处理

  4. Service 执行业务逻辑

  5. Mapper 操作数据库

  6. 返回结果给前端

流程:

前端 → Controller → Service → Mapper → DB → 返回

四、分层架构优势

  1. 解耦:降低模块之间依赖

  2. 易维护:修改互不影响

  3. 易扩展:方便增加功能

  4. 易测试:支持分层测试

五、开发规范建议

  1. Controller 不写业务

  2. Service 不写 SQL

  3. Mapper 专注数据库操作

  4. 使用 Result 统一返回格式

  5. 使用 PageBean 处理分页

六、总结

Spring MVC 架构采用前端控制器模式,结合三层架构设计,使系统具有良好的扩展性和维护性,是企业级开发的标准模式。

注解:

1.@Autowired:让 Spring 自动帮你创建对象 + 注入依赖,你不用自己 new

以前(没 Spring):

|----------------------------------------------|
| DeptService service = new DeptServiceImpl(); |

现在(有 Spring):

|---------------------------------------------|
| @Autowired private DeptService deptService; |

2.@Service = 把"业务类"交给 Spring 管理,变成 Bean

|------------------------------------------|
| @Service public class DeptServiceImpl {} |

等价于:告诉 Spring:这个类是业务层,请你创建对象、管理它、允许别人 @Autowired 注入。"

|---------------------------------------|
| @Service → 造 Bean @Autowired → 用 Bean |

3.@RequestParam的属性defaultValue可以来设置参数的默认值

4.@RequestBody:把前端发来的 JSON 数据,转换成 Java 对象。

5.@Slf4j:自动帮你生成一个日志对象 log,让你直接打日志。

6.@RestController:这个类专门写接口,返回 JSON,不跳页面。

PageHelper分页插件

1.引入依赖:pagehelper-spring-boot-starter

本地存储:

yml:

基本语法:

大小写敏感

数值前面必须有空格作为分隔符

用缩进表示层级关系,必须用空格

空格数目不重要,同层级对齐即可

#表示一行注释

数据格式:

对象/Map集合:

数组/List/Set集合:

JWT:

全称:json web token

定义一种简洁的,自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的

场景:登录认证:登陆成功后,生成令牌,后续每个请求都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后在处理

过滤器(Filter)

概念:是javaweb'三大组件Servlet,Filter,Listener之一,可以把对资源的请求拦截下来,从而实现一些特殊的功能,一般完成一些通用操作,比如登录校验、统一编码处理、敏感字符处理等

过滤器链:

介绍:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链

拦截器:

是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行

拦截请求,在指定多个方法调用前后,根据业务需要执行预先设定的代码

过滤器与拦截器:

接口规范不同:过滤器需要实现Filter接口,拦截需要实现HandleInterceptor接口

拦截范围不同:过滤器会拦截所有的资源,而interceptor之会拦截spring环境中的资源

相关推荐
鱟鲥鳚8 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司10 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地11 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415911 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风14 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
隔窗听雨眠14 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
z1234567898614 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112315 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员15 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus