使用Spring也有很长一段时间了,但还没有深入理解过其设计的思想和实现方式。在此记录学习Spring的一些笔记。
Spring核心主要有三部分: Bean、Context、Core
Bean可以理解为使用特定的箱子包装好的货物,这个货物就是Object对象。Context可以看做装载货物的卡车。那么Core就是搬运货物的工人或工具了,他负责发现、建立和维护Bean之前的关系。
Bean
Bean是Spring操作的对象,可以说是Spring框架中最核心的部分了。可以发现,Spring的整个工作流程,都是对Bean进行一系列的操作。
一个对象要交给Spring进行管理,首先要将其用特定的箱子包装好,转化成相应的Bean,你可以在配置文件中配置Bean,表示我要将这个对象交给Spring容器管理,就像你在寄快递的时候要填一张快递单表示我要把货物交给快递公司帮我运送一样。
Context
总所周知,Spring的两大特性是IOC和AOP,IOC就是控制反转,意思就是你不用亲自去管理对象,而是将对象的操作交给Spring容器来完成。既然如此,Spring就要有容器来容纳和维护这些对象,而Context就是这样的容器,也称为IOC容器。将对象转化为Bean放进IOC容器中,就可以操作这些对象了。就像你把货物包装好装进卡车中,那快递公司就能帮你运货物了。
Core
core封装从不同途径获取资源的方法,然后提供一个统一的接口来加载所有的资源。因为context是容器,它没办法自己去发现对象在哪,所以需要将这个任务交给其他人来做,这个人就是Core,而Core是一个非常聪明的人,他知道对象定义在不同的地方,他不可能亲自去每一个地方来获取这些对象。所以他就发展了很多下线,有的负责从url获取对象,有的负责从类路径,有的从文件去获取等等,最后汇总给一个人ResourceLoader,你只需要实现他,就能从他身上获取这些资源。
接下来会慢慢地熟悉这个Spring框架。本来想bean、context、core分为三个模块分开解析的。但是由于对整个Spring的运行过程不熟悉。所以对每个模块的类完全无法理解。比如BeanFactory、BeanDefinitionReader是干嘛的BeanDefinitionRegister又是干啥的。BeanFactory和ApplicationContext是啥关系。。一脸懵逼。。。所以还是从过程入手,在慢慢切入其中的一个面。暂且把这个过程分为六个部分吧
- 解析BeanDefinition
- 注册BeanDefinition
- 容器初始化
- 加载bean
- 实例化bean
- 资源定位的过程(个人对这部分不是很感兴趣,所以放在最后)
当然为了熟悉这个过程,目前只着重于使用GenericApplicationContext以及XmlBeanDefinitionReader来解析,了解整个过程后,再对每个组件详细讲解。
网友评论