Spring下dataSource实战

总言:在Spring中,任何数据的连接都是通过数据源获得的。数据源的获取主要有两种方式:

1在Spring容器中直接配置数据源

2:通过jndi获取。


下面通过具体的实例讲解这两种数据源配置方法


一:Spring容器中直接配置数据源

Spring在第三方依赖包中有两个实现数据源的类包,分别是DBCP和C3P0,Spring可以利用两者中任何一个进行数据源配置。这种配置方式就是直接在容器中通过引入配置文件写死,要修改数据源就修改配置文件。下面分别介绍具体实现:

1.1.DBCP数据源

DBCP依赖commons-pool的类包,如果使用,需引入如下MAVEN:

<!--dbcp包  -->
		<dependency>
			  <groupId>commons-dbcp</groupId>
			  <artifactId>commons-dbcp</artifactId>
			  <version>1.4</version>
		</dependency>
		
		<!-- dbcp依赖包 -->
		<dependency>
			  <groupId>commons-pool</groupId>
			  <artifactId>commons-pool</artifactId>
			  <version>1.5.4</version>
		</dependency>


Spring中具体配置:

<!-- 引入jdbc配置文件 -->  
    <context:property-placeholder location="classpath:conf/jdbc.properties" /> 
    
	<!--  配置数据源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
 		<property name="driverClassName" value="${jdbc.driverClass}" />  
        <property name="url" value="${jdbc.url}" />  
        <property name="username" value="${jdbc.user}" />  
        <property name="password" value="${jdbc.password}" />  
	</bean>

项目开发中通常会把数据库的配置放在一个properties文件中,通过${XX}形式引用。其中destory-method=“close”指的是Spring容器关闭,数据源能正常关闭。


jdbc.properties:具体配置

####使用jndi或c3p0(DBCP)

#jndi数据源配置
jndi.datasource=jdbc/PUMSDB

#c3p0数据源配置
jdbc.driverClass                  =com.ibm.db2.jcc.DB2Driver
jdbc.url                          =jdbc:db2://10.27.19.1:60004/pumpdev
jdbc.user                         =pumpusr
jdbc.password                     =dE3dHE10
jdbc.minPoolSize                  =1
jdbc.maxPoolSize                  =20
jdbc.initialPoolSize              =1
jdbc.maxIdleTime                  =25000
jdbc.acquireIncrement             =5
jdbc.acquireRetryAttempts         =30
jdbc.acquireRetryDelay            =1000
#####获取connnection时测试是否有效#####
jdbc.testConnectionOnCheckin      =true
#####自动测试的table名称###############
jdbc.automaticTestTable           =c3p0testtable
jdbc.idleConnectionTestPeriod     =18000
jdbc.checkoutTimeout              =3000
上述最重要的就是driverClass,url,user,password四个参数。

1.1.C3P0数据源

<!-- 引入jdbc配置文件 -->  
    <context:property-placeholder location="classpath:conf/jdbc.properties" /> 
    
	<!--  c3p0数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
 	<property name="driverClass" value="${jdbc.driverClass}" />  
        <property name="jdbcUrl" value="${jdbc.url}" />  
        <property name="user" value="${jdbc.user}" />  
        <property name="password" value="${jdbc.password}" />  
	</bean>


jdbc.properties代码如上,不过这里需要注意: property和DHCP的不同。以免启动时报参数错误。


关于其他参数,例如maxActive,maxPoolSize等介绍文章很多,不赘述。


以下是启动日志:



二:使用JNDI配置数据源

如果应用配置在高性能应用服务器上,比如Websphere或者Tomcat等上面时,可以使用JNDI来配置数据源。

原理就是通过容器中配置org.springframework.jndi.JndiObjectFactoryBean,寻在tomcat应用服务器上配置jndi,通过name来匹配。实现如下:


2.1.jdbc.properties配置



2.2.相关的配置

<!-- 引入jdbc配置文件 -->  
    <context:property-placeholder location="classpath:conf/jdbc.properties" /> 
    
	<!--  配置数据源 -->
	<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="${jndi.datasource}"></property>
		<property name="resourceRef" value="true"></property>
	</bean>

引入jdbc配置文件,定义一个jndiName。


tomcat中配置:

 <Resource auth="Container" driverClassName="com.ibm.db2.jcc.DB2Driver" logAbandoned="true" maxActive="100" 
     	maxIdle="30" maxWait="1000" name="jdbc/PUMSDB" password="dE3dHK10" removeAbandoned="true" removeAbandonedTimeout="60"
     	type="javax.sql.DataSource" url="jdbc:db2://XX.XX.XX.XX:XX/XX" username="XX"/>
这里请注意: name=“jdbc/PUMSDB”要和jndiName中匹配。


总结:dataSource配置好后就可以进行相关其他的配置了比如事务,如图:






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值