mybatis3源码研究-构建SqlSessionFactory(二)

来源:互联网 发布:淘宝买水果坏了怎么办 编辑:程序博客网 时间:2024/05/17 04:41

上一篇研究了通过配置文件来构建SqlSessionFactory,本篇将看一下如何通过java程序来构建SqlSessionFactory。
在指南中也给我们提供了相应的方法,如下:
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new
JdbcTransactionFactory();
Environment environment =
new Environment(“development”, transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(configuration);

我们来看一下这段代码,结合上篇代码分析,我们知道构建 SqlSessionFactory的核心代码是 SqlSessionFactoryBuilder().build(configuration);
也就是我们只需要一个configuration即可,既然只需要一个configuration,那么我们的配置信息就需要全部加载到这个对象中。
而我们的配置文件主要有,这两对标签;通过上篇的分析我们可以知道environments 最终解析到了configuration的environment属性中,而mappers最终也是调用的configuration.addMapper方法。
而Configuration中恰好有这么一个构造方法:
public Configuration(Environment environment) {
this();
this.environment = environment;
}
而Environment的构造方法又是如下
public Environment(String id, TransactionFactory transactionFactory, DataSource dataSource){
…………
}
这样所有的信息就都加载到系统中了。

分析这两种构建方法,很容易发现,二者其实是殊途同归,无外乎就是将配置加载到configuration中,然后再通过SqlSessionFactoryBuilder().build(configuration)方法构建一个SqlSessionFactory的实现类
1 0
原创粉丝点击