Spring框架学习[IoC容器载入Bean资源文件](三)

2014-11-24 03:05:57 · 作者: · 浏览: 8
ode, 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) {
  • 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对象过程完成。

    10.看源代码的个人心得总结:

    通过这几天看源码,个人总结一些心得:代码毕竟不是文章,不能从头到尾详细看,个人觉得看源码比较好的方法是:

    首先,先实现一个简单例子调用源码,让整个应用能简单跑起来。

    然后,在进入代码最开始的地方打一个调试断点,使用Debug工具进行单步调试,直到跑完所有流程。

    通过调试就可以理解整个代码的工作流程和调用顺序,有助于理清思路,理解其大概的设计思想。

    Spring代码的确实比较复杂,代码中大量使用了设计模式,另外为了解耦合,代码的分工比较明确,对象也非常的多,对于没有分析源码经验的人来说,阅读代码发现其跨度和跳转非常大,难度和挑战比较大。

    我也是第一次分析Spring源码,希望和大家一起学习探讨。