kk12

导航

SpringMvc原理

自我理解:
IOC:控制反转
对象的创建权从自己手上转移到了Spring容器里面
DI:依赖注入
自动寻找依赖对象
AOP:面向切面编程(连接点,切点,没连到的切点就叫连接点)
image

流程:
用户发送请求(url地址),前端控制器 DispatcherServlet 统一接收,然后前端控制器调用handlerMapper(处理器映射器)
,从handlerMap找到对应的Controller方法然后获取前后置拦截器,前置拦截器去预处理逻辑(做「事前校验 / 准备」,如果校验不通过,可以直接拒绝请求,不让它进入业务逻辑。),然后用匹配到了Controller方法完成业务逻辑,这个时候会返回一个逻辑地址(前缀+逻辑地址+后缀=物理地址),然后后置拦截器执行后续逻辑,DispatcherServlet 拿到 Controller 返回的逻辑地址然后转换成物理地址,然后就是渲染

专业解释
IOC 是一种软件设计思想,而非具体的技术实现。它的核心是:将对象的创建、初始化、依赖关系维护、生命周期管理等控制权,从传统的业务业务代码中 “反转” 出来,交给一个专门的第三方容器(称为「IOC 容器」或「Bean 容器」)来统一管理。

DI 是实现 IOC 思想的主要技术手段和落地方式(可以理解为:IOC 是 “思想纲领”,DI 是 “具体行动方案”)。
它的核心是:当一个对象(A,称为「目标对象」)需要依赖另一个对象(B,称为「依赖对象」)才能完成功能时,对象 A 不需要自己通过new来创建对象 B,而是由 IOC 容器主动将已经创建好、初始化完成的依赖对象 B,通过「构造方法、Setter 方法、字段」等方式 “注入”(传递、赋值)给对象 A,让对象 A 直接使用。

AOP 是一种编程范式(与 OOP「面向对象编程」互补,而非替代 OOP),它的核心是:将程序中的横切逻辑(跨多个业务模块、重复出现的公共逻辑,如日志记录、事务管理、权限校验、性能监控),从核心业务逻辑中抽离出来,单独封装为「切面(Aspect)」,然后通过「动态代理」等技术,在不修改核心业务代码的前提下,将切面逻辑动态 “织入” 到核心业务的指定执行节点上。

Spring MVC 核心组件
在了解流程前,先认识几个关键 "角色",它们是流程运转的核心:
DispatcherServlet(前端控制器):整个流程的 "总调度",所有请求都先经过它,负责协调其他组件,不做具体业务处理。
HandlerMapping(处理器映射器):根据请求的 URL、请求方式(GET/POST)等,找到对应的处理器(Controller 中的方法)。
HandlerAdapter(处理器适配器):统一适配不同格式的处理器,负责调用处理器执行具体业务逻辑(解决不同处理器的调用兼容问题)。
Handler/Controller(处理器 / 控制器):核心业务处理者,就是我们编写的@Controller注解类中的方法,负责处理业务、封装数据。
ViewResolver(视图解析器):根据处理器返回的 "视图名称",解析出对应的物理视图(比如 JSP、HTML 的完整路径)。
View(视图):将处理器返回的数据渲染到物理视图上,生成最终的响应内容(如 HTML 页面)。

客户端发送 HTTP 请求 → 被 Web 服务器转发到DispatcherServlet;
DispatcherServlet通过HandlerMapping找到对应的 Controller 方法;
HandlerAdapter适配并调用 Controller 方法,封装参数、执行业务逻辑;
Controller 方法返回业务对象,被@ResponseBody注解和消息转换器(Jackson)转换成 JSON 字符串;
DispatcherServlet直接将 JSON 字符串作为响应返回给客户端;
客户端(如前端 Vue、React)接收 JSON 数据,进行页面渲染

posted on 2026-01-29 00:45  KAUNG_kk  阅读(0)  评论(0)    收藏  举报