Mybatis系列4-数据源源码分析
1.工厂模式
mybatis的数据源模块使用了工厂模式,分析源码前先讲下工厂模式。
(1)简单工厂模式
简单工厂模式是工厂类直接根据参数创建不同对象。
public class SimpleFactory {
public static final int TYPE1= 1;
public static final int TYPE2 = 2;
public static final int TYPE3 = 3;
public static A createA(int type) {
switch (type) {
case TYPE1:
return new A1();
case TYPE2:
return new A2();
case TYPE3:
default:
return new A3();
}
}
}
(2)工厂方法模式
工厂模式相对于简单工厂莫斯来说,不止一个工厂,每个工厂只生产一种产品。客户端负责挑选使用哪个工厂。
首先有一个工厂接口。
public interface ICarFactory {
public ICar getCar();
}
然后多个工厂类实现。
public class ACarFactory implements ICarFactory {
public ICar getCar(){
return new ACar();
};
}
public class BCarFactory implements ICarFactory {
public ICar getCar(){
return new BCar();
};
}
(3)抽象工厂模式
抽象工厂模式是工厂方法模式的一个升级,工厂方法模式中只有一种产品,而抽象工厂模式中有多种产品,比如抽象工厂接口变为:
public interface ICarFactory {
public ICar getCar();
public IHouse getHouse();
}
然后每个工厂实现内部都有两种产品。剩下的不多说。
2.mybatis的数据源
mybatis用的是工厂方法模式,有一个数据源工厂接口DataSourceFactory。
public interface DataSourceFactory {
//设置DataSource的相关属性
void setProperties(Properties props);
//获取数据源
DataSource getDataSource();
}
然后有三个工厂实现类。
JndiDataSourceFactory、UnpooledDataSourceFactory、PooledDataSourceFactory。
我们平常用的是第三个,有连接池的工厂类,具体源码很简单,这里不多说。
上一篇: 从0到1搭建前后端分离的脚手架框架之后端(三) 参数校验
下一篇: Caused by: java.lang.NoClassDefFoundError: org/apache/ibatis/transaction/TransactionFactory
推荐阅读
-
Java 集合系列(四)—— ListIterator 源码分析
-
spring源码分析系列5:ApplicationContext的初始化与Bean生命周期
-
Java并发系列之Semaphore源码分析
-
Java并发系列之CyclicBarrier源码分析
-
Java并发系列之ConcurrentHashMap源码分析
-
Java并发系列之CountDownLatch源码分析
-
quillJS 富文本编辑器源码分析系列1
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
持久层Mybatis3底层源码分析,原理解析
-
LinkedList源码分析:JDK源码分析系列