首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

spring 流入数据库连接池疑问

2013-11-14 
spring 注入数据库连接池疑问大家都知道在数据库连接时可以使用数据库连接池技术,通过spring可以很好的注

spring 注入数据库连接池疑问
大家都知道在数据库连接时可以使用数据库连接池技术,通过spring可以很好的注入现有的数据库连接池。例如dbcp。配置如下

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
  <!-- 连接池启动时的初始值 -->
  <property name="initialSize" value="10" />
  <!-- 连接池的最大值 -->
  <property name="maxActive" value="100" />
  <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
  <property name="maxIdle" value="50" />
  <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
  <property name="minIdle" value="10" />
  <!--#给出一条简单的sql语句进行验证-->
  <property name="validationQuery" value="select getdate()" />
  <!--#在取出连接时进行有效验证-->
  <property name="testOnBorrow" value="true" />
  <property name="removeAbandonedTimeout" value="120" />
  <property name="removeAbandoned" value="true" />
  <!-- #运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。 -->
  <property name="timeBetweenEvictionRunsMillis" value="3600000" />
  <!-- #连接的超时时间,默认为半小时。 -->
  <property name="minEvictableIdleTimeMillis" value="3600000" />  
 </bean>


在java代码中使用可以如下
 
class JdbcUtil
{
@Autowired
private DataSource dataSource;
 
 
public  Connection getConnection()
{
return dataSource.getConnection();
}
}

 


现在有个疑问,spring注入默认是单例模式,即注入的datasource在服务端只会存在一个,所有webapp共享这个数据库连接池。那么如何去做到让每个webapp独立去维护自己的datasource呢?这样来保证每个webapp都有机会获取数据库连接
    通过修改spring配置可以吗?或者代码自己控制?求解。。。


srping 数据库连接池 dbcp
[解决办法]
首先你自己也说了,datasource只有一个,其他的都只能引用。所有用户的请求使用的datasource都是一个,所以考虑的datasource只有一个

datasource在配置文件里面也说的很清楚了,最大连接数,空闲数目等,所以要管理好datasource只需要在xml里面配置好就可以了
[解决办法]
Spring框架使用了工厂模式和单例模式等,所有的webapp共享一个dataSource。
本身dataSource提供了管理连接客户端的相关办法,如最大连接数......
因此,你只需要配置dataSource就可以了。
如果你想深究的话,怕是要深入研究Spring源代码了。
[解决办法]
引用:
首先你自己也说了,datasource只有一个,其他的都只能引用。所有用户的请求使用的datasource都是一个,所以考虑的datasource只有一个

datasource在配置文件里面也说的很清楚了,最大连接数,空闲数目等,所以要管理好datasource只需要在xml里面配置好就可以了

同意

热点排行