Spring学习笔记(四) DataSource
DataSource是一个接口(interface) javax.sql.DataSource,在java文件中引入DataSource对应的包
Spring中使用的是org.apache.commons.dbcp.BasicDataSource
Dbcp(Data Base Connection Pool)
在本文中将介绍两种配置Spring DataSource的方式
1à基础配置方式
2àPlanceHolder(占位符)配置方式
基础配置方式(以MySQL为例)
-
<bean id="dataSource" //要注入的DataSource,在java文件中有对应的DataSource成员变量
-
class="org.apache.commons.dbcp.BasicDataSource"
-
destroy-method="close">
-
-
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
-
<property name="url" value="jdbc:mysql://localhost:3306/spring" />
-
<property name="username" value="root" />
-
<property name="password" value="admin" />
-
</bean>
上述配置MySQL的方式可以从Spring的官方参考文档中找各种相关数据库的配置示例。
DataSource注入
-
@Component("u")
-
public class UserDAOImpl implements UserDAO {
-
-
private DataSource dataSource;
-
public void save(User user) {
-
try {
-
Connection conn = dataSource.getConnection();
-
String sql = "insert into user values(null,'wenlonghor')";
-
conn.createStatement().executeUpdate(sql);
-
} catch (SQLException ex) { Logger.getLogger(UserDAOImpl.class.getName()).log(Level.SEVERE, null, ex);
-
}
-
System.out.println("user saved!");
-
}
-
-
public DataSource getDataSource() {
-
return dataSource;
-
}
-
@Resource(name="dataSource") //这里如果在beans.xml中对应的名字和成员变量的名字一样,name属性可以不用标注
-
public void setDataSource(DataSource dataSource) {
-
this.dataSource = dataSource;
-
}
-
}
从而,Spring在初始化beans的时候会把beans.xml中的DataSource注入到UserDAOImpl中的DataSource属性中。从而在使用数据库时,使用
DataSource.getConnection()即可获得connection对象。
PlanceHolder(占位符)配置方式
-
<bean
-
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-
<property name="locations">
-
<value>classpath:jdbc.properties</value>
-
</property>
-
</bean>
-
-
<bean id="dataSource" destroy-method="close"
-
class="org.apache.commons.dbcp.BasicDataSource">
-
<property name="driverClassName"
-
value="${jdbc.driverClassName}" />
-
<property name="url" value="${jdbc.url}" />
-
<property name="username" value="${jdbc.username}" />
-
<property name="password" value="${jdbc.password}" />
-
</bean>
代码中第四行设置Spring搜索jdbc.properties路径;8-14行中的设计同基本的Spring DataSource类似,只不过value的获取是从jdbc.properties文件中获取
jdbc.properties文件就是一个键值对,示例如下:
-
jdbc.driverClassName=com.mysql.jdbc.Driver
-
jdbc.url=jdbc:mysql://localhost:3306/spring
-
jdbc.username=root
-
jdbc.password=admin
dbcp.BasicDataSource
-
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
-
<property name="url" value="jdbc:mysql://localhost:3306/spring" />
-
<property name="username" value="root" />
-
<property name="password" value="admin" />
-
<property name="initialSize" value="10" /> //初始化连接
-
<property name="maxIdle" value="20" />//最大空闲连接数
-
<property name="minIdle" value="10" />
-
<property name="MaxActive" value="50" />//最大连接数
-
<property name="logAbandoned" value="true" />//是否在自动回收超时连接的时候打印链接超时连接错误
-
<property name="removeAbandoned" value="true" />//是否自动回收超时连接
-
<property name="removeAbandonedTimeout" value="180" />//超时时间,单位毫秒
-
<property name="maxWait" value="1000" />//超时等待时间
posted on 2013-09-02 10:56 wenlonghor 阅读(551) 评论(2) 编辑 收藏 举报