Spring通过c3p0或者dbcp连接数据库获得DataSource配置

dbcp方法:

1--jar包: commons-collections4-4.0.jar commons-dbcp2-2.1.1.jar   commons-pool2-2.4.2.jar

2--配置Spring IOC容器,读取 jdbc.properties 配置文件到内存里(也可以不配置该文件,具体后文会讲到)

jdbc.properties 配置如下(以Oracle为例,前后不要有空格 ,同时需要加入Oracle驱动包:c3p0-0.9.1.jar):

username=用户名

password=密码

driverclassname=oracle.jdbc.driver.OracleDriver

url==jdbc\:oracle\:thin\:@localhost\:1521\:xe

Spring IOC容器(applicationContext.xml),如下方式注入

classpath:jdbc.properties 

3--注入到DataSource中,

jar包:commons-dbcp2-2.1.1.jar

如果配置了第二步,继续如下配置:

如果没有配置第二步,就将property对应的name值,直接赋值即可;

如果使用dpcp方法还有如下常用属性:

defaultAutoCommit:设置从数据源中返回的连接是否采用自动提交机制,默认值为 true;
defaultReadOnly:设置数据源是否仅能执行只读操作, 默认值为 false; 
maxActive:最大连接数据库连接数,设置为0时,表示没有限制; 
maxIdle:最大等待连接中的数量,设置为0时,表示没有限制; 
maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息; 
validationQuery:用于验证连接是否成功的查询SQL语句,SQL语句必须至少要返回一行数据,
如你可以简单地设置为:“select count(*) from user”; 
removeAbandoned:是否自我中断,默认是 false ; 
removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值; 
logAbandoned:是否记录中断事件, 默认为 false;

4--配置jdbcTemplate(Spring自带的辅助类 ,jar包:spring-jdbc-4.2.1.RELEASE.jar)

jdbcTemplate:使用模板方式封装jdbc数据库操作,固定的流程操作,提供丰富的callback回调接口功能,方便公户自定义 加工细节跟好模块化jdbc操作,简化传统

配置如下:





5--注入到一个UserDaoImp类中(因为注入需要jdbcTemplate, 必须定义个该类型的成员变量)

UserDaoImp如下定义

public class PersonDaoImp implements PersonDao{
private JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;

}

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void save() {
System.out.println("person保存了");
System.out.println(jdbcTemplate.getDataSource());
}
}

注入配置如下:





测试方法如下:

@Test

public void test01(){
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
PersonDao pd=(PersonDao) ac.getBean("personDaoImp");
pd.save();
}


如果是用c3p0:

只需导入c3p0jar包

将第二步改为


.
.......(类容不变)
.

同时参数略有不同


以上配置可以进行简化;

第四步和第五步 是将DataSource注入到JdbcTemplate,在注入到UserDaoImp;也有进行修改

让UserDaoImp继承JdbcDaoSupport类; 当设置了DataSource属性的时候,会创建jdbcTemplate实例,

UserDaoImp修改为:

public class PersonDaoImp02 extends JdbcDaoSupport implements PersonDao{
@Override
public void save() {
System.out.println("person保存了");
System.out.println(this.getJdbcTemplate().getDataSource());
}
}

第四部和第五步合并如下:






最后的总结:

jar: c3p0-0.9.1.jar;  ojdbc14.jar

commons-collections4-4.0.jar;  commons-dbcp2-2.1.1.jar;  commons-logging-1.2.jar;  commons-pool2-2.4.2.jar

spring-beans-4.2.1.RELEASE.jar;  spring-context-4.2.1.RELEASE.jar;  spring-core-4.2.1.RELEASE.jar;  

spring-expression-4.2.1.RELEASE.jar;  spring-jdbc-4.2.1.RELEASE.jar;  spring-tx-4.2.1.RELEASE.jar  

你可能感兴趣的:(Spring通过c3p0或者dbcp连接数据库获得DataSource配置)