spring源码——资源的定位及资源的载入

准备好数据,是容器进行控制反转的基础。

这个环节主要是分为2步:第一,资源的定位;第二,资源的载入。

1.1 资源的定位

关键词:recource接口-在定位资源的时候使用的是classpathresource。即在类路径中去寻找;。

每个具体的ioc容器实例中都会配置特定的读取器对资源进行操作。

具体流程是:由refresh()方法触发,先构建一个ioc容器,在ioc容器中启动loadbeandefinations()开始处理beandefinations.

在这时,会初始化读取器。另外,

在这个方法中主要是通过getresource()及url的一些方法通过路径对资源进行定位。可以理解为spring进行了相关的i/o操作。

1.2 资源的载入

对于ioc容器来说,载入相当于把定义的beandefination在ioc容器中转化成一个spring内部表示的数据结构的过程。真正的载入是在读取器初始化完成后,启动读取器来完成载入的。

重点在于,beandefination的解析需要按照spring的bean定义的语义进行解析,并转化为内部数据结构。

载入分为2步:(1)调用xml解析器得到document对象。(2)创建defaultbeandefinitiondocumentreader,再完成beandefinition的处理,处理结果由beandefinitionholder来持有(它是beandefinition对象的封装类,封装了beandefiniton,bean的名字和别名,用它来完成向ioc容器的注册)。beandefinitionholder的生成是通过对document文档树的内容进行解析来完成的。具体的解析过程是由beandefinitionparserDelegatel来实现,最重要的是这个解析是与spring对beandefinition的配置规则紧密相关的。

 

posted @ 2016-09-11 20:25  会飞的企鹅吧  阅读(274)  评论(0编辑  收藏  举报