最近項目用c3p0數據連接池有問題,因此換成了druid連接池,它的優點是可以很好的監控DB池連接和SQL的執行情況。在此做個記錄便於下次使用。
1、首先導入Spring(網上很多這里我就不列舉了)和Druid(druid-1.0.9.jar)的相關jar包
2、在web.xml中搭建Spring和Druid的環境
<!-- Spring監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 查看數據源 -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
3、在Spring-servlet.xml中配置druid數據連接池
<!-- 使用annotation 自動注冊bean -->
<context:component-scan base-package="com.kanq" />
<!-- spring配置duid數據庫連接池的數據源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本屬性 url、user、password127.0.0.1 -->
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" />
<property name="username" value="jsyzt2" />
<property name="password" value="jsyzt2" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="2" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<!-- 配置獲取連接等待超時的時間 -->
<property name="maxWait" value="60000" />
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 驗證連接有效與否的SQL,不同的數據配置不同 -->
<property name="validationQuery" value="SELECT 'x' from dual " />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打開PSCache,並且指定每個連接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
<!-- 配置監控統計攔截的filters -->
<property name="filters" value="stat" />
</bean>
<!--spring配置事務(我用的是Spring自帶的 JdbcTemplate) -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 采用注解配置事務 -->
<tx:annotation-driven transaction-manager="txManager" />
4、編寫java文件
@Service
public class JdbcServiceBean {
protected SimpleJdbcTemplate simpleJdbcTemplate;
@Resource(name = "dataSource")
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
}