当前位置: 首页 > news >正文

JAVA-SpringBoot、Spring框架以及SpringMVC学习总结

一、SpringBoot项目结构

1. 项目层级结构

完整流程
前端 → Controller(SpringMVC) → Service(业务逻辑) → Mapper(数据访问) → 数据库

各层职责

  • 前端:用户界面,负责发送请求和显示响应
  • Controller:处理请求,调用Service层方法
  • Service:实现业务逻辑,协调各组件工作
  • Mapper:数据访问层,与数据库交互
  • 数据库:存储数据

二、Spring框架详解

1. Spring框架的概念

  • 核心思想:控制反转(IoC)和面向切面编程(AOP)
  • 组成模块:Spring Core、Spring MVC、Spring JDBC、Spring AOP等

2. Spring的核心概念

2.1 控制反转(IoC)

什么是IoC

  • 传统方式:我们自己创建对象,如UserService userService = new UserService();
  • IoC方式:由Spring容器创建和管理对象,我们只需要使用

IoC的好处

  • 解耦:减少类之间的依赖关系
  • 简化代码:不需要手动创建和管理对象
  • 便于测试:可以轻松替换实现类

IoC的实现

  • 依赖注入(DI):通过构造方法、setter方法或字段注入依赖
  • Bean容器:Spring管理的对象称为Bean,由IoC容器创建和管理

示例

// 传统方式
public class UserController {private UserService userService = new UserService();
}// IoC方式
public class UserController {@Autowiredprivate UserService userService; // Spring自动注入
}

2.2 面向切面编程(AOP)

什么是AOP

  • 概念:将横切关注点(如日志、事务、安全)从业务逻辑中分离出来

AOP的核心术语

  • 切面(Aspect):横切关注点的模块化
  • 连接点(Join Point):程序执行过程中的点
  • 通知(Advice):在连接点执行的代码
  • 切点(Pointcut):定义哪些连接点会被通知

AOP的应用场景

  • 日志记录:统一记录方法调用日志
  • 事务管理:统一处理事务的开始和提交
  • 安全检查:统一检查用户权限

3. Spring的核心组件

3.1 Bean

什么是Bean

  • Spring管理的对象称为Bean
  • 所有由Spring容器创建和管理的对象都是Bean

Bean的配置方式

  • XML配置:在XML文件中定义Bean
  • 注解配置:使用@Component@Service@Controller等注解
  • Java配置:使用@Configuration@Bean注解

3.2 依赖注入(DI)

注入方式

  • 构造方法注入:通过构造方法传递依赖
  • Setter方法注入:通过setter方法设置依赖
  • 字段注入:直接在字段上使用@Autowired注解

示例

// 字段注入
@Service
public class UserService {@Autowiredprivate UserMapper userMapper;
}// 构造方法注入
@Service
public class UserService {private UserMapper userMapper;@Autowiredpublic UserService(UserMapper userMapper) {this.userMapper = userMapper;}
}

4. Spring的核心组件

4.1 Controller

作用:处理Web请求,调用Service层方法

  • 特点:一个方法对应一个请求地址
  • 注解@Controller@RequestMapping
  • 返回值:通常返回逻辑视图名(字符串)

4.2 Service

作用:实现业务逻辑,协调各组件

  • 特点:封装核心业务逻辑
  • 注解@Service
  • 调用:被Controller调用,调用Mapper

4.3 Mapper

作用:数据访问层,与数据库交互

  • 特点:负责执行SQL语句
  • 实现方式
    • XML配置文件
    • 注解方式(如@Select@Insert等)
  • 调用:被Service调用

5. 持久层

5.1 持久层的组成

持久层:Mapper + 数据库

  • Mapper:定义数据访问接口
  • 数据库:存储数据的地方

5.2 数据访问方式

常见方式

  • MyBatis:通过XML或注解配置SQL
  • JPA:通过注解自动生成SQL
  • JDBC:原生数据库访问方式

6. Spring的生命周期

Bean的生命周期

  1. 实例化:创建Bean对象
  2. 属性赋值:设置Bean的属性
  3. 初始化:调用初始化方法
  4. 使用:应用程序使用Bean
  5. 销毁:容器关闭时销毁Bean

生命周期回调

  • 初始化回调:使用@PostConstruct注解或实现InitializingBean接口
  • 销毁回调:使用@PreDestroy注解或实现DisposableBean接口

三、SpringMVC详解

1. SpringMVC的概念

SpringMVC:是Spring框架的一个模块,用于处理Web请求

  • 作用:连接前端和后端,处理用户请求并返回响应
  • 核心组件:Controller、DispatcherServlet、HandlerMapping等

2. SpringMVC与传统Servlet的区别

传统Servlet

  • 一个Servlet对应一个地址
  • 多个地址需要创建多个Servlet类

SpringMVC

  • 一个Controller类可以有多个方法
  • 每个方法对应一个地址
  • 一个类可以当多个Servlet使用

3. SpringMVC的请求处理流程

image

完整流程图

前端发送请求 → DispatcherServlet → HandlerMapping → 处理器链 → 执行处理器 → 获取逻辑地址 → 渲染页面 → 返回响应

详细流程解析

  1. 前端发送请求

    • 用户在浏览器中输入URL或点击链接
    • 前端发送HTTP请求到服务器
    • 请求包含URL、参数等信息
  2. DispatcherServlet接收请求

    • DispatcherServlet是SpringMVC的核心,相当于中央调度器
    • 所有请求都先经过DispatcherServlet
    • 负责协调各个组件的工作
  3. HandlerMapping处理

    • 作用:根据请求URL找到对应的Controller方法
    • 处理过程
      • 从清单中获取处理器链:前置拦截器列表 + 目标Controller方法 + 后置拦截器列表
      • 拦截器的作用:处理请求参数,将请求参数自动转换为方法参数
  4. 执行处理器链

    • 循环遍历处理器链中的每个元素
    • 依次执行:前置拦截器 → 目标Controller方法 → 后置拦截器
    • 通过反射机制调用每个方法
    • 前置拦截器:处理请求参数
    • 目标Controller方法:执行业务逻辑
    • 后置拦截器:处理响应数据
  5. 获取逻辑地址并转换为物理地址

    • Controller方法执行后返回一个逻辑地址
    • 逻辑地址需要转换为物理地址(实际文件路径)
    • 转换规则:前缀 + 逻辑地址 + 后缀
    • 示例:/WEB-INF/jsp/user + index + .jsp = /WEB-INF/jsp/user/index.jsp
  6. 渲染页面并返回响应

    • 根据物理地址找到对应的JSP文件
    • 将数据填充到JSP中,生成静态HTML页面
    • 将渲染后的页面返回给前端显示

4. URL地址的组成

Controller地址的组成

  • 类级别的URL:在Controller类上使用@RequestMapping注解定义的基础地址
  • 方法级别的URL:在Controller方法上使用@RequestMapping注解定义的具体地址
  • 完整地址:类级别URL + 方法级别URL

示例

@Controller
@RequestMapping("/user")  // 类级别URL
public class UserController {@RequestMapping("/list")  // 方法级别URLpublic String list() {return "user/list";  // 返回逻辑地址}
}
// 完整地址:/user/list

四、核心要点

  • Spring:核心是IoC和AOP,为Java应用提供全面的基础设施
  • SpringMVC:处理Web请求,连接前端和后端
  • SpringBoot:简化Spring配置,提供自动配置和快速开发能力
  • 项目结构:前端 → Controller → Service → Mapper → 数据库
  • SpringMVC流程:请求 → DispatcherServlet → HandlerMapping → 处理器链 → 逻辑地址 → 物理地址 → 渲染页面
http://www.jsqmd.com/news/313811/

相关文章:

  • AI应用架构师主动学习实践:推动产业创新升级
  • 1.28假期记录
  • 亲测好用专科生必备10款一键生成论文工具测评
  • 如果你使用mybatis,那么这个插件能帮助你快速排查问题
  • 完整教程:STM32外设学习-I2C(细节)--学习笔记
  • 基于springboot的大学生就业招聘系统的设计与实现项目源码 java毕设 免费分享
  • U-Net++实践验证——建立基线+性能优化
  • 生成式AI如何深度赋能高校信息化系统?
  • AutoDL使用教程
  • 如何系统启动文件损坏,无法进入系统,如何利用备份的BCD文件进行恢复系统
  • 韦东山嵌入式入门笔记之——应用制作基础篇(七)电阻屏和电容屏
  • P1873 [COCI 2011/2012 #5] EKO / 砍树
  • Thinkphp和Laravel画师作品约稿投稿平台_
  • Thinkphp和Laravel高校党支部党务管理系统_
  • Thinkphp和Laravel高校学生健康饮食食堂菜品推荐预订系统_02187_
  • 处理完ACPI!AcpiBuildRunMethodList链表后处理ACPI!AcpiBuildDeviceList链表--大转折
  • 深度测评9个AI论文软件,助研究生轻松搞定学术写作!
  • 23.FPGA设计流程
  • 开发常用 宏
  • ONLYOFFICE 桌面编辑器正式成为 ShaniOS 默认办公套件
  • P1824 [USACO05FEB] 进击的奶牛 Aggressive Cows G
  • 《MYSQL技术内幕:InnoDB存储引擎》| 锁与事务
  • 百度智能云上调2026年目标:增速提至200%,AI云开打系统战
  • 《创业之路》-867-组织的自动化、数字化、信息化、智能化、自主化的五大系统详解
  • 《创业之路》-869-传统组织通过制度和流程约束人性在执行中带来的不确定性;未来则借助AI智能体技术,将对确定性、重复性、规则性要求高的任务从人类手中剥离,使人得以专注于创造性、情感性、战略性
  • 小程序毕设选题推荐:微信小程序的个人运动健康管理平台基于SpringBoot+Vue的个人运动健康小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • AI-大语言模型LLM-Transformer架构1-整体介绍
  • AI-大语言模型LLM-Transformer架构2-自注意力
  • 【课程设计/毕业设计】基于SpringBoot+Vue的个人身心健康管理小程序的设计与实现【附源码、数据库、万字文档】
  • AI-大语言模型LLM-Transformer架构3-嵌入和位置编码