Spring 核心原理

Spring 核心原理(通俗易懂完整版)

Spring 是 Java 最主流的轻量级分层开源框架,核心目的:解耦、简化开发、统一管理对象、统一增强功能。

Spring 所有原理只围绕两大核心:IOC 容器、AOP 切面。

一、IOC 控制反转(Spring 灵魂核心)

  1. 什么是 IOC?
    传统开发:程序员主动 new 对象、管理依赖(控制权在程序代码)。
    Spring IOC:把对象的创建、依赖管理、生命周期全部交给 Spring 容器,程序员只管使用,不用手动 new。
    控制权 从程序员反转给容器 → 控制反转 IOC。
  2. DI 依赖注入(IOC 的实现方式)
    IOC 是思想,DI 是落地手段。
    当一个类需要另一个类对象时,Spring 自动帮你注入依赖,不用自己创建。
    三种注入方式:
  • 构造器注入(Spring 官方推荐)
  • setter 注入
  • 字段注解注入(@Autowired)
  1. IOC 底层执行流程
  2. 启动项目,Spring 扫描所有带注解的类(@Component、@Service、@Controller 等)
  3. 解析配置,生成 BeanDefinition(对象模板信息)
  4. 容器根据模板 反射创建 Bean 对象
  • singleton 单例(默认):整个容器只创建一个对象
  • prototype 多例:每次获取都新建对象
  • request / session:web 专属作用域
  1. Bean 完整生命周期(面试必背)
    实例化 → 填充属性 → 前置处理 → 初始化 → 后置处理 → 销毁
  2. 通过反射 实例化对象
  3. 依赖注入(赋值、装配依赖)
  4. 执行 Bean 前置处理器(BeanPostProcessor before)
  5. 执行初始化方法(@PostConstruct / init-method)
  6. 执行后置处理器(after,AOP 代理在这里生成)
  7. Bean 就绪,进入容器使用
  8. 容器关闭,执行销毁方法
    重点:AOP 代理对象,是在 Bean 初始化之后、放入容器之前生成的。

二、AOP 面向切面编程

  1. 什么是 AOP
    不修改原有业务代码,对方法进行增强,实现:日志、事务、权限、限流、异常统一处理。
    核心思想:业务逻辑与公共逻辑解耦。
  2. AOP 核心术语
  • 切点 Pointcut:要拦截的哪些方法
  • 通知 Advice:拦截后要执行的增强代码(前置、后置、环绕、异常、最终)
  • 切面 Aspect:切点 + 通知的整体
  • 连接点 JoinPoint:被拦截的方法
  1. AOP 底层原理:动态代理
    Spring AOP 不用改源码,靠代理实现增强:
  • 有接口:JDK 动态代理(基于接口)
  • 无接口:CGLIB 动态代理(基于子类继承)
    SpringBoot 2.x 默认全部使用 CGLIB。
  1. AOP 执行顺序
    前置通知 → 执行目标方法 → 后置正常通知 / 异常通知 → 最终通知

三、Spring 整体架构

Spring 核心四层:

  1. Core 核心层:基础工具、通用资源
  2. Beans 组件层:Bean 工厂、对象管理
  3. Context 上下文层:完整 IOC 容器、事件、环境配置
  4. SpEL 表达式:动态取值解析
    扩展能力:AOP、事务、Web、JDBC、缓存等全部基于核心容器扩展。

四、Spring 为什么好用(核心价值总结)

  • 彻底解耦:IOC 消除大量 new 对象、硬依赖
  • 无侵入增强:AOP 不用改业务代码就能加事务、日志
  • 统一对象管理:生命周期统一、单例可控
  • 简化开发:封装 JDBC、事务、资源管理
  • 高度可扩展:插件化、可自定义后置处理器

五、一句话终极总结

Spring = IOC 容器统一管理所有对象 + AOP 动态增强所有方法,实现代码解耦、优雅、可扩展、易维护。

相关推荐
yurenpai(27届找实习中)1 小时前
从零读懂 AI 智能客服(一):模块职责与 SSE 聊天链路(后端架构)
java·人工智能·架构·langchain4j
用户938515635071 小时前
掘金风格后端数据库设计实战:从用户表到分布式架构,一文搞定
后端·sql
陈皮波比茶1 小时前
Swagger
java
玹外之音1 小时前
Spring AI + Elasticsearch 向量存储实战:从零构建智能文档检索系统
人工智能·spring·elasticsearch
拾光师2 小时前
Hadoop 三种运行模式:从单机调试到生产集群,一路搭过来
后端
小闫BI设源码2 小时前
Elasticsearch面试必看:如何让客户端精准选择节点高效执行请求?
java·elasticsearch·面试宝典·深入解析
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 5 章 使用 Spring Boot 阅读笔记 9
java·spring boot·笔记
进阶的小名2 小时前
Spring AI 2.0 探索:多 OpenAI-Compatible 模型接入,以及下一代 Session 记忆管理
java·人工智能·后端·gpt·spring·ai·chatgpt
卷无止境2 小时前
FastAPI 的 Metadata 到底是什么,又牵动了哪些核心概念
后端·python