DataSource(数据源)提供了一个标准化的取得数据库连接的方式,通过getConnection()方法即可取得数据库的连接,Spring也提供了数据库连接池(DataBase connection pool),配置数据源的模板如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1"/> <!-- 连接池的最大值 --> <property name="maxActive" value="500"/> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2"/> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1"/> </bean> |
示例:
通过测试可以很清晰的知道需要加入:org.apache.commons.dbcp.jar与org.apache.commons.pool.jar与数据库驱动。
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns :xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns :context="http://www.springframework.org/schema/context" xmlns :aop="http://www.springframework.org/schema/aop" xsi :schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd" > <context:component-scan base-package="net.zmcheng"/> <bean id=" logInterceptor" class="net.zmcheng.aop.LogInterceptor"/> <aop:config> <aop:pointcut expression="execution(public * net.zmcheng.serviceImpl.UserServiceImpl.add())" id="servicePointCut"/> <aop:aspect id="logAspect" ref=" logInterceptor"> <aop:before method="before" pointcut-ref="servicePointCut"/> <aop:around method="aroundMethod" pointcut-ref="servicePointCut"/> </aop:aspect> </aop:config> <!-- 设置数据源:提供了一个标准化的取得数据库连接的方式 --> <bean id="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/BSWS?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="password"/> </bean> </beans> |
daoImpl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package net.zmcheng.daoImpl; import java.sql.Connection; import javax.annotation.Resource; import javax.sql.DataSource; import org.springframework.stereotype.Component; import net.zmcheng.dao.UserDao; @Component public class UserDaoImpl implements UserDao { private DataSource dataSource; public DataSource getDataSource() { return dataSource; } @Resource public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void add() { try{ Connection conn = dataSource.getConnection(); conn.createStatement().executeUpdate("insert into Z values('zhangsan',5)"); System.out.println("添加员工成功"); conn.close(); } catch (Exception e){ e.printStackTrace(); } } } |
经测试成功加入,其它的接口与类在上篇博客中都贴了,本篇只贴了代码改变的daoImpl类。
属性占位符方式配置数据源
另外还可以通过属性占位符方式配置数据源,这时数据源的属性放在了一个属性配置文件中,如:jdbc.properties,模板如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <context:property-placeholder location=“jdbc.properties”/> <!--也可以使用XML的方式--> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClassName}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </bean> |
PS:使用占位符的方式配置数据源,需要在类路径或绝对路径下建一个属性配置文件,如jdbc.properties。