1.前言
ioc就不说了 大家都知道。不知道的童鞋可以出门右转百度,google,简书总有一款适合你!
说说BeanDefinition 这个是ioc非常重要一个组件,实际就是pojo对象在ioc中的抽象,通过这个BeanDefinition定义的数据结构,使ioc容器能够方便的对pojo对象也 就是javabean执行管理.
大体意思是说BeanDefinition是java实体类在spring里面的抽象.而BeanDefinition 的定位就是通过某种方式找到外部的资源 这个资源指的是类路径下,io下或者 url.
2.xmlBeanFactory和FileSystemXmlApplicationContext
xmlBeanFactory是如何寻找Resource的呢?
在xmlBeanFactory中有一个XmlBeanDefinitionReader 他有一个loadBeanDefinitions方法通过这样就寻找Resource了
而相对于beanfactory更高级的ApplicationContext 是如何寻找Resource呢
FileSystemXmlApplicationContext 相信大家都经常用用这个作为eg:
首先FileSystemXmlApplicationContext的继承关系中他的根类AbstractApplicationContext继承的DefaultResourceLoader
找到了我们根据路径获取Resource的方法也就是定义BeanDefinition在哪。
首先我们定义初始化FileSystemXmlApplicationContext时会有一个refresh的过程 ,这个过程就是ioc初始化的步骤
在这里我们
通过这个方法找
这个方法相信大家都很熟悉 这个就是XmlBeanDefinitionReader 里的方法
loadBeanDefinitions方法是一个模板模式基类里面规定好了规则 由继承的子类实现即可
传送门模板模式传送门 http://www.cnblogs.com/zuoxiaolong/p/pattern10.html
3.获得Resource