您的位置:首页 > 其它

容器的基础XmlBeanFactory。

2017-05-23 20:09 337 查看
BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"));

1、配置文件封装。

Resource resource = new ClassPathResource("beanFactoryTest.xml"); // 将配置文件封装为Resource类型的实例方法。

new XmlBeanFactory(resource); // 初始化XmlBeanFactory。

ignoreDependencyInterface(); // 忽略给定接口的自动装配功能。

this.reader.loadBeanDefinitions(resource); // 加载bean。

2、加载bean。

loadBeanDefinitions(resource); // 加载bean.

EncodedResource encodedResource = new EncodedResource(resource); // 对资源文件的编码进行处理。

loadBeanDefinitions(encodedResource); // 数据准备阶段。

Resource resource = getResource(); // 从encodedResource中获取已经封装的Resource对象。

InputSteam inputSteam = getInputStream(); // 从Resource中获取其中的inputStream。

InputSource inputSource = new InputSource(inputStream);  // 通过SAX读取XML文件的方式来准备InputSource对象。

doLoadBeanDefinitions(inputSource, encodedResource.getResource());  // 逻辑核心处理部分

数据准备阶段,包括在此之后的所有步骤。

逻辑核心处理部分包含以下操作。

// 获取对XML文件的验证模式。

int validationMode = getValidationModeForResource(resource);

// 加载XML文件,并得到对应的Document。

Document doc = loadDocument(inputSource, getEntityResolver(), this.errorHandler, validationMode, isNamespaceAware());

// 根据返回的Document注册Bean信息。

registerBeanDefintions(doc, resource);

处理过程。

1、封装资源文件。当进入XmlBeanDefinitionReader后首先对参数Resource使用EncodedResource类进行封装。

2、获取输入流。从Resource中获取对应的InputStream并构造InputSource。

3、通过构造的InputSource实例和Resource实例继续调用函数doLoadBeanDefinitions。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: