SPRING03_为什么要学习源码、基础的接口、SPRING工作流程详解

简介: ①. 为什么要学习源码?②. Spring基础接口③. Spring的工作流程详解

①. 为什么要学习源码?


①. 工作上:在我们后来的企业级开发期间,调试一些疑难BUG,肯定都要深入到框架底层来进行调试,那如果懂得框架底层源码的时候,在调试BUG期间就会知道这个BUG是由业务逻辑某一部分导致的还是框架底层导致的,因为现在市面上的任何一个框架都不能说是毫无BUG的,都在不断的更新迭代修复,所以学好框架源码这也是必要的


②. 面试上:在面试过程当中,设计模式与框架源码也是一个高频考点。比如经常会有面试官问到:你有没有掌握某一个框架的源码?你所知道的设计模式有哪些?如果你是用另一种角度来进行回答的:比如首先你挑了一个设计模式,也比较与众不同的,你没有挑工厂模式,没有挑单例,假设你挑了一个桥接模式或者是其他模式等。接下来你又在Spring的底层找了一处功能的源码实现,然后发现它使用的就是桥接模式,那接下来应该是这么回答:

(Spring源码的底层在对于某一个功能的实现的时候,它使用了桥接模式,桥接模式它是怎么用的,并在Spring底层又达到了怎么样的一个效果。那么相信这个回答一定是出彩于任何人的,所以这就是无论从什么维度来说都应该学好源码)


③. Spring里面有很多核心接口,只要把这些核心接口搞清楚了,那么Spring的整个运作就非常的清楚了。接下来我们将对Spring的整体流程先做个大概的介绍,后续将会对各个接口进行详解


②. Spring基础接口


①. Resource(资源)+ResourceLoader(资源加载器)

每写一个xml/注解配置都是一个Resource(资源),然后由ResourceLoader(资源加载器)去读取Resource(资源)里面的资源,然后读取完的这些资源,再转为BeanDefinition (Bean的定义信息)


②. BeanFactory(Bean工厂)

这是Spring框架里面最大的工厂,所有东西都在这个BeanFactory工厂里面


③. BeanDefinition(Bean的定义信息)

这是Bean的定义信息,这些定义信息都存在BeanDefinitionRegistry(档案馆里面)


④. BeanDefinitionReader(bean定义信息的读取器)

BeanDefinitionReader(bean定义信息的读取器)去读取资源,并把资源转成BeanDefinition,然后存到BeanDefinitionRegistry里面,最终进行制造


⑤. BeanDefinitionRegistry(Bean的注册中心)

这个是存Bean的定义信息的,可以理解成档案馆


⑥. ApplicationContext(IOC容器)


⑦. Aware(可装配,装配Spring底层的一些组件)


⑧. 生命周期-后置处理器

BeanFactoryPostProcessor

InitializingBean

BeanPostProcessor


③. Spring的工作流程详解


①. Spring暴露给程序员的就是要么写一个xml文件,要么就是写一堆注解

(所有的资源都被Spring用Resources来表示,这叫资源)


②. 这些资源(xml/注解),Spring底层有一个类叫ResourcesLoader(资源加载器),这个ResourcesLoader(资源加载器)就负责加载这些资源


③. 这些资源(xml/注解)写了一些组件或者功能配置,那么实际上在Spring的底层,所有的组件所有的配置都应该放在了BeanDefinition里面,也就是说(xml/注解)写的组件应该在底层对应一个叫BeanDefinition(bean的定义信息)


④. 那么BeanDefinition(bean的定义信息)怎么来的?

ResourcesLoader资源加载器,把这些(xml/注解)资源加载来以后交给BeanDefinitionReader(bean定义信息的读取器),然后将它解析成一个个的BeanDefinition对象


⑤. 放到Spring的哪里呢?.1 Spring底层所有的组件,都得有这个BeanDefinition(Bean定义信息),所以就放在了BeanDefinitionRegistry档案馆里面


⑥. BeanDefinitionRegistry的档案袋就是一个map,这个Map就保存每一个组件是如何定义的


⑦. 接下来就是把这些BeanDefinition(bean的定义信息)挨个给他创建成对象(只要这些对象创建完,那么就能在容器中可以获取)


⑧. 在整个对象创建过程中,是有各种池的:临时对象池(earlySingletonObjects),单例工厂池(singletonFactories),已注册的单例池(registeredSingletons),单例对象池(singletonObjects)。


⑨. 其中就有一个叫单例对象池(singletonObjects),所有创建好的单实例对象全放在这里

以后从工厂中获取,其实就是从这个单例对象池(singletonObjects)里面进行获取的


微信图片_20220108224330.png

相关文章
|
19天前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
7月前
|
监控 Java 应用服务中间件
微服务——SpringBoot使用归纳——为什么学习Spring Boot
本文主要探讨为什么学习Spring Boot。从Spring官方定位来看,Spring Boot旨在快速启动和运行项目,简化配置与编码。其优点包括:1) 良好的基因,继承了Spring框架的优点;2) 简化编码,通过starter依赖减少手动配置;3) 简化配置,采用Java Config方式替代繁琐的XML配置;4) 简化部署,内嵌Tomcat支持一键式启动;5) 简化监控,提供运行期性能参数获取功能。此外,从未来发展趋势看,微服务架构逐渐成为主流,而Spring Boot作为官方推荐技术,与Spring Cloud配合使用,将成为未来发展的重要方向。
236 0
微服务——SpringBoot使用归纳——为什么学习Spring Boot
|
2月前
|
设计模式 Java 开发者
如何快速上手【Spring AOP】?从动态代理到源码剖析(下篇)
Spring AOP的实现本质上依赖于代理模式这一经典设计模式。代理模式通过引入代理对象作为目标对象的中间层,实现了对目标对象访问的控制与增强,其核心价值在于解耦核心业务逻辑与横切关注点。在框架设计中,这种模式广泛用于实现功能扩展(如远程调用、延迟加载)、行为拦截(如权限校验、异常处理)等场景,为系统提供了更高的灵活性和可维护性。
|
6月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
417 70
|
4月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
568 2
|
6月前
|
Java Spring
Spring框架的学习与应用
总的来说,Spring框架是Java开发中的一把强大的工具。通过理解其核心概念,通过实践来学习和掌握,你可以充分利用Spring框架的强大功能,提高你的开发效率和代码质量。
164 20
|
7月前
|
存储 监控 数据可视化
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
145 0
|
11月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
246 9
|
Java API Spring
Spring学习路径
Spring作为一个优秀的开源企业级框架有着一下特点 开源框架 简化企业级应用开发的流程 Spring是一个JavaSE/EE的一站式框架 优点在于 方便解耦 AOP的编程支持 声明式事务的支持 可以引入jUnit4,方便程序测试 对优秀开源框架的支持,方便集成 降低JavaEE API的使用难度.
2604 0

热门文章

最新文章