基於Xml 的IOC 容器-準備文件物件
DocumentLoader 將Bean 配置資源轉換成Document 物件的原始碼如下:
//使用標準的JAXP將載入的Bean定義資源轉換成document物件
@Override
public Document loadDocument(InputSource inputSource, EntityResolver entityResolver,
ErrorHandler errorHandler, int validationMode, boolean namespaceAware) throws Exception {
//建立檔案解析器工廠
DocumentBuilderFactory factory = createDocumentBuilderFactory(validationMode, namespaceAware);
if (logger.isDebugEnabled()) {
logger.debug("Using JAXP provider [" + factory.getClass().getName() + "]");
}
//建立文件解析器
DocumentBuilder builder = createDocumentBuilder(factory, entityResolver, errorHandler);
//解析Spring的Bean定義資源
return builder.parse(inputSource);
}
protected DocumentBuilderFactory createDocumentBuilderFactory(int validationMode, boolean namespaceAware)
throws ParserConfigurationException {
//建立文件解析工廠
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(namespaceAware);
//設定解析XML的校驗
if (validationMode != XmlValidationModeDetector.VALIDATION_NONE) {
factory.setValidating(true);
if (validationMode == XmlValidationModeDetector.VALIDATION_XSD) {
// Enforce namespace aware for XSD...
factory.setNamespaceAware(true);
try {
factory.setAttribute(SCHEMA_LANGUAGE_ATTRIBUTE, XSD_SCHEMA_LANGUAGE);
}
catch (IllegalArgumentException ex) {
ParserConfigurationException pcex = new ParserConfigurationException(
"Unable to validate using XSD: Your JAXP provider [" + factory +
"] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? " +
"Upgrade to Apache Xerces (or Java 1.5) for full XSD support.");
pcex.initCause(ex);
throw pcex;
}
}
}
return factory;
}
上面的解析過程是呼叫JavaEE 標準的JAXP 標準進行處理。至此Spring IOC 容器根據定位的Bean 配置資訊,將其載入讀入並轉換成為Document 物件過程完成。接下來我們要繼續分析Spring IOC 容器將載入的Bean 配置資訊轉換為Document 物件之後,是如何將其解析為Spring IOC 管理的Bean 物件並將其註冊到容器中的。
相關文章
- Spring系列:基於XML的方式構建IOCSpringXML
- Spring 原始碼 (2)Spring IOC 容器 前戲準備工作Spring原始碼
- CUJ:標準庫:基於檔案的容器 (轉)
- xml.dom——文件物件模型APIXML物件模型API
- 基於PHP與XML的PDF文件生成技術(摘要) (轉)PHPXML
- IOC容器
- Laravel的Ioc容器Laravel
- Spring基礎使用(一)--------IOC、Bean的XML方式SpringBeanXML
- 為基於意圖的網路做準備
- Spring的IOC容器Spring
- 反射+IOC容器反射
- 4、Spring IOC容器 Bean物件例項化的3種方式SpringBean物件
- 測試基準資料的準備
- 【spring原始碼學習】spring的IOC容器之自定義xml配置標籤擴充套件namspaceHandler向IOC容器中註冊beanSpring原始碼XML套件Bean
- 如何理解 Laravel 的 IoC 容器Laravel
- Spring(三):IoC容器裝配Bean(xml配置方式和註解方式)SpringBeanXML
- Spring IOC XML配置SpringXML
- 基於Fedora Core 5的核心編譯的準備工作(轉)編譯
- 基於Fedora Core 3的核心編譯的準備工作(轉)編譯
- Spring基於註解的IoC配置Spring
- 對Spring IOC容器的思考Spring
- 淺析 Spring 的IOC容器Spring
- 深入理解DIP、IoC、DI以及IoC容器
- 20個為前端開發者準備的文件和指南前端
- Spring框架IOC容器Spring框架
- Spring--IOC容器Spring
- 從原始碼看Spring中IOC容器的實現(二):IOC容器的初始化原始碼Spring
- KVM之一:安裝準備(基於CentOS6.7)CentOS
- Spring IOC原始碼分析之-重新整理前的準備工作Spring原始碼
- Spring基於XML方式的使用SpringXML
- Spring IoC 容器的擴充套件Spring套件
- Spring IOC容器-註解的方式Spring
- 20個為前端開發者準備的文件和指南(6)前端
- 20個為前端開發者準備的文件和指南(7)前端
- 20個為前端開發者準備的文件和指南(8)前端
- 20個為前端開發者準備的文件和指南(1)前端
- 20個為前端開發者準備的文件和指南(5)前端
- 20個為前端開發者準備的文件和指南(2)前端