关于DBCP为什么加载了配置文件 直接一个getConnection就获得了连接对象呢 ?

纯属自己个人理解 如果有错误 欢迎指出

我们看到DataSource对象的创建是由BasicDataSourceFacto的createDataSource(配置文件)方法创建的 

然后通过源代码我们发现  就拿加载驱动来说 其他的加载是一样的

首先源代码是这样的

value = properties.getProperty(PROP_DRIVERCLASSNAME);
        if (value != null) {
            dataSource.setDriverClassName(value);
        }

这时候我们就可以知道value是配置文件中 驱动的值  就比如是com.mysql.jdbc.Driver

然后调用工厂的创建DataSource的方法 ,在这个方法里面创建一个BasicDataSource的对象 


然后通过DataSource对象(也就是BasicDataSource的对象)的setDriverClassName()方法来设置

  public synchronized void setDriverClassName(String driverClassName) {
        if ((driverClassName != null) && (driverClassName.trim().length() > 0)) {
            this.driverClassName = driverClassName;
        }
        else {
            this.driverClassName = null;
        }
        this.restartNeeded = true;

而.driverClassName是的BasicDataSource一个字段  ,里面包含了很多东西 比如连接池最大对象数 对象密码,驱动名字之类的

这就把所有的东西配置好了  获得了全部加载好的连接池  记住这里的连接池对象只是字段什么都设置好了  

但是要获得Connection对象  是通过getConnection方法来获得的  

他调用的getCOnnection()底层是怎么实现的呢

1:点击getConnection 我们发现是createDataSource().getConnection();

2点击createDataSource 我们发现他调用了一个对象工厂createConnectionFactory这个方法  而这个方法是BasicDataSource的其中一个方法 

3上面我们看到 之前加载的时候就已经把这个类里面的字段什么都设置好了 ,而这个方法就是初始化jdbc程序 也就是连接数据库 

4之后调用getConnection方法 就可以获得对象了 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值