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

Spring框架核心

Spring 框架核心详解(2025-2026 主流认知版)

Spring 框架发展到今天(Spring Framework 6.x + Spring Boot 3.x 时代),其核心已经非常清晰,主要围绕以下6 大核心支柱构建,几乎所有高级功能都是在这 6 个基础上的组合与扩展。

一、Spring 核心六大支柱(必须记住的骨架)

排名核心概念英文名称一句话本质作用是否 Spring Boot 默认开启2025-2026 重要程度
1控制反转 / 依赖注入IoC / DI把“new 对象”的权利交给容器★★★★★
2Bean 的生命周期与容器BeanFactory / ApplicationContext管理所有 Spring Bean 的创建、销毁、作用域等★★★★★
3AOP(面向切面编程)Aspect Oriented Programming在不改业务代码前提下插入横切逻辑(日志、事务等)是(但需加注解)★★★★☆
4@Configuration + Java 配置Java-based Configuration用纯 Java 代码替代 XML 配置是(Spring Boot 主流)★★★★☆
5自动装配与条件装配@Autowired / @Conditional自动找 bean + 根据条件决定是否创建 bean★★★★☆
6核心注解驱动开发@Component / @Service / @Repository 等声明式开发,替代传统 XML bean 定义★★★★☆

二、最核心概念逐一拆解(通俗版 + 代码示例)

1. IoC 容器与 DI(最重要,占 Spring 灵魂 60%)

一句话
你不用自己new,由 Spring 容器帮你创建对象并把依赖“注入”进来。

三种注入方式(2025 年主流写法)

@ServicepublicclassOrderService{// 方式1:字段注入(最常见,但不推荐用于生产)@AutowiredprivateUserRepositoryuserRepo;// 方式2:构造器注入(官方 2025 年最推荐写法)privatefinalPaymentServicepaymentService;@Autowired// Spring 4.3+ 后单参构造器可省略 @AutowiredpublicOrderService(PaymentServicepaymentService){this.paymentService=paymentService;}// 方式3:Setter 注入(适合可选依赖)privateEmailServiceemailService;@Autowired(required=false)// 可选注入publicvoidsetEmailService(EmailServiceemailService){this.emailService=emailService;}}

面试常问:为什么推荐构造器注入?
答:

2. Bean 的作用域(Scope)
作用域说明使用场景默认值?
singleton整个容器只有一份几乎所有服务类、工具类
prototype每次获取都创建一个新对象有状态的 bean(如每次请求新对象)
request每个 HTTP 请求一个 beanWeb 环境下的 request 范围对象
session每个 HTTP Session 一个 bean用户会话级别的对象
application整个 ServletContext 一个 bean全局应用数据
websocket每个 WebSocket 会话一个 beanWebSocket 场景

代码写法(最常用两种)

@Component@Scope("prototype")// 每次 @Autowired 都新对象publicclassTicketGenerator{...}@Bean@Scope(value="request",proxyMode=ScopedProxyMode.TARGET_CLASS)publicShoppingCartshoppingCart(){...}
3. AOP 的核心四要素(2025 年面试高频)
  1. 切面(Aspect)= 切点(Pointcut) + 通知(Advice)

  2. 通知类型(Advice 类型,按执行顺序):

最常用环绕通知写法(事务、日志、权限的典型模板)

@Aspect@ComponentpublicclassLoggingAspect{@Around("@annotation(org.springframework.transaction.annotation.Transactional)")publicObjectlogTransaction(ProceedingJoinPointjoinPoint)throwsThrowable{log.info("开启事务:{}",joinPoint.getSignature());try{Objectresult=joinPoint.proceed();// 执行目标方法log.info("事务提交");returnresult;}catch(Throwablee){log.error("事务回滚",e);throwe;}}}
4. Spring Boot 如何把这些核心简化到极致
Spring 经典写法Spring Boot 时代写法(2025 主流)简化了什么
XML + 定义@Component / @Service / @Repository告别 XML
ClassPathXmlApplicationContextSpringApplication.run()一行启动整个容器
@Autowired + @Qualifier@Autowired + 首字母小写 bean 名自动注入减少配置
手动配置 DataSource、JdbcTemplatespring-boot-starter-jdbc 自动配置零配置连接数据库

三、2025-2026 年 Spring 核心面试高频题(建议背熟)

  1. Spring IoC 容器启动过程中发生了什么?(BeanFactory → ApplicationContext → refresh() 十二大步骤)
  2. Bean 的生命周期完整 11 个阶段是哪些?(最常考前 7 个:实例化 → 属性填充 → 初始化前 → 初始化 → 使用 → 销毁前 → 销毁)
  3. @Autowired、@Resource、@Inject 的区别?
  4. Spring 如何解决循环依赖?(三级缓存机制)
  5. AOP 的底层实现原理?(动态代理:JDK Proxy vs CGLIB)
  6. Spring Boot 自动配置的原理?(@EnableAutoConfiguration → spring.factories → Condition 条件装配)

四、一句话总结 Spring 核心

Spring 的本质就是:帮你管理对象(IoC)、帮你注入依赖(DI)、帮你在不改代码的情况下插入额外逻辑(AOP),然后用一堆约定优于配置的方式把这一切变得极简(Spring Boot)。

如果你想深入某一块(比如循环依赖三级缓存、AOP 动态代理源码、BeanFactory 与 ApplicationContext 区别、@Conditional 家族全家桶),可以直接告诉我,我继续展开~

http://www.jsqmd.com/news/283616/

相关文章:

  • 智能综合管理平台,何以破解咨询企业管理痛点?
  • 时间同步服务器大型单位推荐
  • 第8章:从jdbc到MyBatis
  • Python神经网络、随机森林、PCA、SVM、KNN及回归实现ERα拮抗剂、ADMET数据预测|附代码数据
  • 基于51/STM32单片机电机霍尔测速PWM控制PID无刷CAN总线无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 服务器里面多个网口,电口,光口确定
  • 携程闹乌龙,误发通知全员都被离职了。
  • Python用Ridge、Lasso、KNN、SVM、决策树、随机森林、XGBoost共享单车数据集需求预测及动态资源调配策略优化|附代码数据
  • 基于STM32单片机DDS函数信号发生器AD9850方波正弦波设计套件57(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 使用 useAgent 与 LangGraph 构建全栈 AI Agent 应用
  • Python、Flask、ECharts及MySQL疾病疫情数据可视化系统设计与实现——多模块联动实时展示优化|附代码数据
  • Java泛型详解
  • 批量校正图像方向(校正PDF页面方向)
  • 基于51/STM32单片机智能台灯路灯坐姿语音光照PWM调光无线设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 国产知识管理平台崛起:Gitee Wiki如何领跑企业数字化转型新赛道
  • Gitee领跑2026年项目管理工具市场:技术驱动与本土化优势双轮驱动
  • 2026年全球医疗行业趋势研究报告:AI医疗、创新药与医疗器械|附240+份报告PDF、数据、可视化模板汇总下载
  • 高通QCE工程实践:硬件加密加速从入门到调试
  • ClevNote安卓版(安卓手机备忘录应用)
  • 走向开放硅:Baochip-1x 的 RISC-V MCU 架构与工程实践
  • JMeter压力测试,如何“温柔”地搞垮你的服务器?
  • 技术日报|微软AI训练器登顶,X算法源码重回GitHub热榜
  • # 一个简单的提示词技巧,让我的 AI 变聪明了 200%
  • 数组算法分享 | 代码随想录(CPP+LeetCode)
  • 【大数据毕设源码分享】django基于协同过滤算法+数据可视化的电影个性化推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • cuas ai相关论文 Awesome-Efficient-Agents
  • “DeepSeek 时刻” 一周年
  • Skills、Commands、Agents、Plugins——这些概念你分得清吗?
  • 【大数据毕设源码分享】django基于协同过滤算法+数据可视化的经济型酒店推荐系统大数据的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 不用背理论!5 个新手设计技巧,快速提升作品质感