容器的基础 XmlBeanFactory(1)
这是第一篇Spring源码分析,主要是为了找到继续阅读源码的兴趣,了解一个概况同时找了
ignoreDependencyInterface
和ignoreDependencyType
深入分析了下。
链接
从头看点这里
下载源码、笔记以及对应的例子进入我的GitHub
参考链接
- 打开BeanFactory ignoreDependencyInterface方法的正确姿势
- BeanFactoryPostProcessor详解 - 愤怒的苹果ext的博客
- BeanFactoryPostProcessor和BeanPostProcessor的调用时点
概况
- 我们通过一个简单例子切入源码,阅读spring-bean-test1,简单了解获取一个
bean
的过程 - 首先介绍了核心类
DefaultListableBeanFactory
,其次按照在该类注释中@see顺序大致了解下各个类 - 进入到
XmlBeanFactory
了解XmlBeanFactory
和DefaultListableBeanFactory
的区别,了解构造过程 - 进入到
AbstractAutowireCapableBeanFactory
的构造函数,进而深入到ignoreDependencyInterface
中查看其作用,以及与ignoreDependencyType
区别 - 最后通过小例子ignored-dependency-test来查看
ignoreDependencyType
以及ignoreDependencyInterface
是如何工作的在自动装配的过程中忽略某些类
总结
BeanFactoryPostProcessor
是Spring
提供的一个扩展点,让我们可以在所有bean
都加载、注册完成(还未初始化)的时候,允许我们做一些修改,例子中我们可以在自动注入的时候忽略某些属性的注入,或者修改成员属性的值ignoreDependencyType
以及ignoreDependencyInterface
两者是不同的,平时ignoreDependencyType
的功能已经足够使用,而ignoreDependencyInterface
是忽略接口中的set
方法,从而在实现类中具有相同参数的set
方法也会被忽略,从而对应的成员在自动装配的时候被忽略,目的是为了某些重要的成员属性(比如ApplicationContextAware
、BeanFactoryAware
)统一交由框架进行注入。