版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_royi/article/details/85158667
spring启动源码分析(ClassPathXmlApplicationContext)
Applicantioncontext uml图
- ClassPathXmlApplicationContext xml 配置文件项目中的路径
- FileSystemXmlApplicationContext xml 配置文件在系统中的路径
- AnnotationConfigApplicationContext 注解类启动方式
BeanFactory uml图
- ApplicationContext 继承了 ListableBeanFactory,这个 Listable
的意思就是,通过这个接口,我们可以获取多个 Bean,大家看源码会发现,最顶层 BeanFactory 接口的方法都是获取单个 Bean
的。 - ApplicationContext 继承了 HierarchicalBeanFactory,Hierarchical
单词本身已经能说明问题了,也就是说我们可以在应用中起多个 BeanFactory,然后可以将各个 BeanFactory
设置为父子关系。 - AutowireCapableBeanFactory 这个名字中的 Autowire 大家都非常熟悉,它就是用来自动装配 Bean用的,但是上图ApplicationContext 并没有继承它,不过不用担心,不使用继承,不代不可以使用组合,如果你看到ApplicationContext 接口定义中的最后一个方法 getAutowireCapableBeanFactory()
- ConfigurableListableBeanFactory 也是一个特殊的接口,看图,特殊之处在于它继承了第二层所有的三个接口,而ApplicationContext 没有。这点之后会用到。