spring理解一

 spring基本工作原理例如以下:

 1.查找bean配置文件

 2.载入bean配置文件并解析生成中间表示BeanDefinition

 3.注冊beanDefinition

 4.假设是单例或lazy-init=false,则直接生成bean

 

 spring将

 1.查找bean配置文件

 2.载入bean配置文件并解析生成中间表示BeanDefinition

 3.注冊beanDefinition

这三部分开,能够提供很多其它的定制给用户。

 spring将配置文件之类的文件资源抽象成一个Resource,封装了getInputStream。isClose等方法。

 Resource有子类ClasspathResouce及FileSystemResource

 Resouce攻克了第一步查找bean配置文件的问题

 

 接着要解决第二步载bean配置文件并解析生成中间表示BeanDefinition。

 spring这个是通过BeanDefinitionReader(接口)去做。

 BeanDefinitionReader有实现XmlBeanDefinitionReader等。

 XmlBeanDefinitionReader有个參数为容器BeanRegistry用于存放解析后的BeanDefinition。

 即BeanDefinitionReader能够分三步完毕第二步任务:1.将Resource中的inputStream解析成xml的Dom形式 2.依据Dom。生成BeanDefinition 3.注冊到BeanRegistry中

 这里将resource解析成Dom是用还有一个类DefaultDocumentLoader去做。

解析xml生成BeanDefinition则交给:BeanDefinitionParserDelegate去做。

 注冊BeanDefinition就简单了,由于BeanRegitry容器是做为參数进入XmlBeanDefinitionReader的,所以直接调就能够了。


 能够看出spring设计XmlBeanDefinitionReader类时。将这个类的职责分解,并将每一部分任务交给对应的类去做。

 

 样例:

         ClassPathResource res=new ClassPathResource("containerTest.xml"); //定位资源
        DefaultListableBeanFactory factory=new DefaultListableBeanFactory(); //BeanRegistry容器
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory); //

         int n=reader.loadBeanDefinitions(res); //触发,XmlBeanDefinitionReader载入,解析配置文件,生成BeanDefinition的动作

        B b=(B) factory.getBean("b");

 



  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值