关于使用Properties来配置DateSourc的细节

关于使用Properties来实现DateSourc的细节

获取DataSource的方式

众所周知,在我们使用Druid连接池时,我们可以使用两种方式来得到一个dataSource数据源。
第一:DataSource是一个接口,可以通过 以下语句来获得

DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
// 设置创建连接池时创建多少个连接
dataSource.setInitialSize(5);
// 设置最大连接数,当从连接池里面获取的连接超过了5个会继续创建,超过了10个就需要等待
dataSource.setMaxActive(10);
// 获取连接
Connection conn = dataSource.getConnection();

第二:通过DruidDataSourceFactory.createDataSource(properties)来实现

properties.load((ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties")));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);

我们今天主要研究第二种方式的原理

原理解析

在我们调用creatDateSource()方法时,底层也是和方式一差不多
底层原理

补充说明

值得一提的时,数据库连接池的目的是共享资源,避免频繁的创建,销毁而造成的资源浪费。
它的底层的设计模式是引用记数。该模式在复用资源方面用的非常广泛,我们把该方法运用到对于连接的分配释放上。每一个数据库连接,保留一个引用记数,用来记录该连接的使用者的个数。具体的实现上,我们对Connection类进行进一步包装来实现引用记数。被包装的Connection类我们提供2个方法来实现引用记数的操作,一个是Repeat(被分配出去)Remove(被释放回来);然后利用RepeatNow属性来确定当前被引用多少,具体是哪个用户引用了该连接将在连接池中登记;最后提供IsRepeat属性来确定该连接是否可以使用引用记数技术。一旦一个连接被分配出去,那么就会对该连接的申请者进行登记,并且增加引用记数,当被释放回来时候就删除他已经登记的信息,同时减少一次引用记数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值