《Spring揭秘》读书笔记

看第二遍,发现有些东西都忘了,而且还是有些新收获。

按照bean的生命周期的顺序,总结一下相关的东西。


图片来源-spring揭秘

1.BeanFactory是基础IOC容器,ApplicationContext在BeanFactory的基础上构建,是相对比较高级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级特性,比如事件发布、国际化信息支持等,支持web应用。

2.BeanDefinitionReader读取配置文件生成BeanDefinition。


3.每一个受管的对象,在容器中都会有一个BeanDefinition的实例(instance)与之相对应,该BeanDefinition的实例负责保存对象的所有必要信息,

包括其对应的对象的class类型、是否是抽象类、构造方法参数以及其他属性等。RootBeanDefinition、ChildBeanDefinition实现BeanDefinition 。

4.DefaultListableBeanFactory实现BeanFactory、BeanDefinitionRegistry
BeanDefinitionRegistry 负责注册管理,BeanFactory 负责管理bean。

5.FactoryBean只是一种bean,getObject()会返回factory生产的bean。

6.Spring框架提供了一个BeanFactoryAware接口,容器在实例化实现了该接口的bean定义的过程中,会自动将容器本身注入该bean。这样,该bean就持有了它所处的BeanFactory的引用。

7.Spring提供了一种叫做BeanFactoryPostProcessor的容器扩展机制。该机制允许我们在容器实 例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做相应的修改。
PropertyPlaceholderConfigurer是BeanFactoryPostProcessor的一种实现。
通常情况下,我们不想将类似于系统管理相关的信息同业务对象相关的配置信息混杂到XML配置文件中,以免部署或者维护期间因为改动繁杂的XML配置文件而出现问题。我们会将一些数据库连接信息、邮件服务器等相关信息单独配置到一个properties文件中,这样,如果因系统资源变动的话,只需要关注这些简单properties配置文件即可。
PropertyPlaceholderConfigurer允许我们在XML配置文件中使用占位符(PlaceHolder), 并将这些占位符所代表的资源单独配置到简单的properties文件中来加载。

8.BeanPostProcessor的概念容易与BeanFactoryPostProcessor的概念混淆。但只要记住BeanPostProcessor是存在于对象实例化阶段,而BeanFactoryPostProcessor则是存在于容器启动阶段, 这两个概念就比较容易区分了。
与BeanFactoryPostProcessor通常会处理容器内所有符合条件的BeanDefinition类似,BeanPostProcessor会处理容器内所有符合条件的实例化后的对象实例。

猜你喜欢

转载自blog.csdn.net/daimingyang123/article/details/80161582