前言

方法重载最终实现处理的方法源码如下:

    public SqlSessionFactory build(Reader reader, String environment, Properties properties) {         try {           // 实例化 XMLConfigBuilder,用于读取配置文件信息           XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);           // 解析配置信息,保存到 Configuration           return build(parser.parse());         } catch (Exception e) {           throw ExceptionFactory.wrapException("Error building SqlSession.", e);         } finally {           ErrorContext.instance().reset();           try {             reader.close();           } catch (IOException e) {             // Intentionally ignore. Prefer previous error.           }         }       }
    public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {         try {           XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);           return build(parser.parse());         } catch (Exception e) {           throw ExceptionFactory.wrapException("Error building SqlSession.", e);         } finally {           ErrorContext.instance().reset();           try {             inputStream.close();           } catch (IOException e) {             // Intentionally ignore. Prefer previous error.           }         }       }

实例化 XMLConfigBuilder 类

通过 SqlSessionFactoryBuilder 中 XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties), 分析 XMLConfigBuilder实例化过程。
该类中有四个变量:

    private boolean parsed;     private final XPathParser parser;     private String environment;     private final ReflectorFactory localReflectorFactory = new DefaultReflectorFactory();

XMLConfigBuilder构建函数实现:

    public XMLConfigBuilder(Reader reader, String environment, Properties props) {         this(new XPathParser(reader, true, props, new XMLMapperEntityResolver()), environment, props);     }

实例化