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 {
@Autowired
private 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 {
@Autowired
private UserMapper userMapper;
}
// 构造方法注入
@Service
public class UserService {
private UserMapper userMapper;
@Autowired
public 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的生命周期:
- 实例化:创建Bean对象
- 属性赋值:设置Bean的属性
- 初始化:调用初始化方法
- 使用:应用程序使用Bean
- 销毁:容器关闭时销毁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的请求处理流程

完整流程图:
前端发送请求 → DispatcherServlet → HandlerMapping → 处理器链 → 执行处理器 → 获取逻辑地址 → 渲染页面 → 返回响应
详细流程解析:
-
前端发送请求:
- 用户在浏览器中输入URL或点击链接
- 前端发送HTTP请求到服务器
- 请求包含URL、参数等信息
-
DispatcherServlet接收请求:
- DispatcherServlet是SpringMVC的核心,相当于中央调度器
- 所有请求都先经过DispatcherServlet
- 负责协调各个组件的工作
-
HandlerMapping处理:
- 作用:根据请求URL找到对应的Controller方法
- 处理过程:
- 从清单中获取处理器链:前置拦截器列表 + 目标Controller方法 + 后置拦截器列表
- 拦截器的作用:处理请求参数,将请求参数自动转换为方法参数
-
执行处理器链:
- 循环遍历处理器链中的每个元素
- 依次执行:前置拦截器 → 目标Controller方法 → 后置拦截器
- 通过反射机制调用每个方法
- 前置拦截器:处理请求参数
- 目标Controller方法:执行业务逻辑
- 后置拦截器:处理响应数据
-
获取逻辑地址并转换为物理地址:
- Controller方法执行后返回一个逻辑地址
- 逻辑地址需要转换为物理地址(实际文件路径)
- 转换规则:前缀 + 逻辑地址 + 后缀
- 示例:/WEB-INF/jsp/user + index + .jsp = /WEB-INF/jsp/user/index.jsp
-
渲染页面并返回响应:
- 根据物理地址找到对应的JSP文件
- 将数据填充到JSP中,生成静态HTML页面
- 将渲染后的页面返回给前端显示
4. URL地址的组成
Controller地址的组成:
- 类级别的URL:在Controller类上使用
@RequestMapping注解定义的基础地址 - 方法级别的URL:在Controller方法上使用
@RequestMapping注解定义的具体地址 - 完整地址:类级别URL + 方法级别URL
示例:
@Controller
@RequestMapping("/user") // 类级别URL
public class UserController {
@RequestMapping("/list") // 方法级别URL
public String list() {
return "user/list"; // 返回逻辑地址
}
}
// 完整地址:/user/list
四、核心要点
- Spring:核心是IoC和AOP,为Java应用提供全面的基础设施
- SpringMVC:处理Web请求,连接前端和后端
- SpringBoot:简化Spring配置,提供自动配置和快速开发能力
- 项目结构:前端 → Controller → Service → Mapper → 数据库
- SpringMVC流程:请求 → DispatcherServlet → HandlerMapping → 处理器链 → 逻辑地址 → 物理地址 → 渲染页面

浙公网安备 33010602011771号