目錄
解析内容
擷取流解析
擷取SqlSessionFactory對象解析
擷取SqlSession對象解析
擷取Mapper對象解析
一 擷取流解析
InputStream is= Resources.getResourceAsStream(resource);
通過getResourceAsStream擷取資源檔案,擷取的過程如下:
1 .1調用getResourceAsStream(String resource)方法
1.2調用getResourceAsStream(ClassLoader loader, String resource)方法
1.3通過classLoaderWrapper.getResourceAsStream(resource, loader)方法來擷取流,我們再繼續跟進getResourceAsStream(resource, loader)方法
1.4再繼續跟進this.getResourceAsStream(resource, this.getClassLoaders(classLoader))方法
二 擷取SqlSessionFactory對象解析
2.2 然後再往進跟
2.3調用 this.build((InputStream)inputStream, (String)null, (Properties)null);方法
2.4 再向this.build(parser.parse())方法跟進
三 擷取SqlSession對象解析
3.1這裡的openSession()方法是DefaultSqlSessionFactory類中的,是以我們要進入到此類中檢視
3.2再次進入 this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false);方法中檢視
四 擷取Mapper對象解析
4.1我們 需要進入到getMapper()方法中去,這裡調用的是DefaultSqlSession中的getMapper()方法
4.2然後是調用配置中的getMapper方法(this.configuration.getMapper(type, this);)
4.3調用映射注冊器中getMapper方法擷取Mapper對象
4.4通過MapperProxy使用反射來擷取最終的mapper對象