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的生命周期

  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")  // 方法级别URL
    public String list() {
        return "user/list";  // 返回逻辑地址
    }
}
// 完整地址:/user/list

四、核心要点

  • Spring:核心是IoC和AOP,为Java应用提供全面的基础设施
  • SpringMVC:处理Web请求,连接前端和后端
  • SpringBoot:简化Spring配置,提供自动配置和快速开发能力
  • 项目结构:前端 → Controller → Service → Mapper → 数据库
  • SpringMVC流程:请求 → DispatcherServlet → HandlerMapping → 处理器链 → 逻辑地址 → 物理地址 → 渲染页面
posted @ 2026-01-28 20:10  犯困蛋挞别犯困  阅读(0)  评论(0)    收藏  举报