Druid配置

Druid 有两种配置方法:一种是基于spring的配置,另一种是手动创建链接。

下面简述这两种方法。

一、Spring配置

把数据源改为以下配置:

[html]   view plain  copy
 print ?
  1. <span style="white-space:pre">    </span><!--druid 配置数据源-->  
  2.     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
  3.         <property name="url" value="${jdbc.url}" />  
  4.         <property name="username" value="${jdbc.username}"/>  
  5.         <property name="password" value="${jdbc.password}"/>  
  6.         <property name="initialSize" value="1" /><!-- 配置初始化连接池数量-->  
  7.         <property name="minIdle" value="1" /><!-- 配置最小连接池数量-->  
  8.         <property name="maxActive" value="20" /><!-- 配置最大连接池数量-->  
  9.         <property name="maxWait" value="60000" /><!-- 配置获取连接等待超时的时间 单位毫秒-->  
  10.         <property name="useUnfairLock" value="true"/><!--使用非公平锁-->  
  11.         <property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  12.         <property name="minEvictableIdleTimeMillis" value="300000" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  13.         <property name="validationQuery" value="SELECT 'x'" /><!--用来检测连接是否有效的sql,要求是一个查询语句。-->  
  14.         <property name="testWhileIdle" value="true" /><!--申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->  
  15.         <property name="testOnBorrow" value="false" /><!--申请连接时执行validationQuery检测连接是否有效,-->  
  16.         <property name="testOnReturn" value="false" /><!--归还连接时执行validationQuery检测连接是否有效,-->  
  17.         <property name="poolPreparedStatements" value="true" /><!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  
  18.         <property name="maxOpenPreparedStatements" value="20" />  
  19.         <property name="filters" value="stat" /><!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->  
  20.     </bean>  


配置web.xml 开启Druid的内置监控页面

在web.xml中添加以下代码

[html]   view plain  copy
 print ?
  1. <span style="white-space:pre">    </span><!--druid 监控页面-->  
  2.     <servlet>  
  3.         <servlet-name>DruidStatView</servlet-name>  
  4.         <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
  5.     </servlet>  
  6.     <servlet-mapping>  
  7.         <servlet-name>DruidStatView</servlet-name>  
  8.         <url-pattern>/druid/*</url-pattern>  
  9.     </servlet-mapping>  
  10.     <filter>  
  11.         <filter-name>DruidWebStatFilter</filter-name>  
  12.         <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>  
  13.         <init-param>  
  14.             <param-name>exclusions</param-name>  
  15.             <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>  
  16.         </init-param>  
  17.     </filter>  
  18.     <filter-mapping>  
  19.         <filter-name>DruidWebStatFilter</filter-name>  
  20.         <url-pattern>/*</url-pattern>  
  21.     </filter-mapping>  

配置完后,重启工程,访问监控页面:http://ip:port/projectName/druid/index.html


二、手动创建链接。

采用new DruidDataSource ()或者DruidDataSourceFactory .createDataSource(properties)的方式均可,前者需要手动设置参数值,后者自动从配置文件中读取,可根据需要使用。

[java]   view plain  copy
 print ?
  1. package demo.test;  
  2.    
  3. import java.io.InputStream;  
  4. import java.sql.Connection;  
  5. import java.sql.SQLException;  
  6. import java.util.Properties;  
  7. import javax.sql.DataSource;  
  8. import com.alibaba.druid.pool.DruidDataSourceFactory;  
  9.    
  10. public class DBUtil {  
  11.     private static DataSource ds = null;    
  12.     static {  
  13.         try{  
  14.             InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("ds.properties");  
  15.             Properties props = new Properties();  
  16.             props.load(in);  
  17.             ds = DruidDataSourceFactory.createDataSource(props);  
  18.         }catch(Exception ex){  
  19.             ex.printStackTrace();  
  20.         }  
  21.     }   
  22.     public static Connection openConnection() throws SQLException{  
  23.         return ds.getConnection();  
  24.     }    
  25. }  

ds.properties

[plain]   view plain  copy
 print ?
  1. driverClassName = com.mysql.jdbc.Driver  
  2. url = jdbc:mysql://localhost:3306/yuan_web  
  3. username = ******  
  4. password = ******  
  5.    
  6. initialSize = 5  
  7. maxActive = 10  
  8. minIdle = 3  
  9. maxWait = 60000  
  10. removeAbandoned = true  
  11. removeAbandonedTimeout = 180  
  12. timeBetweenEvictionRunsMillis = 60000  
  13. minEvictableIdleTimeMillis = 300000  
  14. validationQuery = SELECT 1 FROM DUAL  
  15. testWhileIdle = true   
  16. testOnBorrow = false  
  17. testOnReturn = false  
  18. poolPreparedStatements = true  
  19. maxPoolPreparedStatementPerConnectionSize = 50  
  20. filters = stat  
### Druid 数据库连接池配置教程 #### 添加 Maven/Gradle 依赖 为了在项目中使用 Druid 连接池,需先引入相应的依赖项。对于 Maven 用户来说,在 `pom.xml` 文件中加入如下片段即可完成依赖添加[^2]。 ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${最新版本号}</version> </dependency> ``` 而对于 Gradle 用户,则应在 build.gradle 中添加: ```groovy implementation 'com.alibaba:druid-spring-boot-starter:${最新版本号}' ``` #### 配置 application.properties 或 application.yml 接着是在项目的配置文件中定义具体的数据库连接属性以及 Druid 特有的设置选项。以下是部分常用参数及其解释[^5]。 ##### 使用 Properties 格式 ```properties spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password # 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 获取连接等待超时时间 spring.datasource.maxWait=60000 # 超过时间限制是否回收 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 # 测试语句 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 属性类型是字符串,通过别名方式配置扩展插件,常用的插件有: # 监控统计用filter:stat 日志用filter:log4j 防御SQL注入filter:wall spring.datasource.filters=stat,wall,slf4j ``` ##### 使用 Yaml 格式 ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC username: root password: password initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat, wall, slf4j ``` 上述配置涵盖了从基本连接信息到高级功能启用等多个方面,能够满足大多数应用场景下的需求。 #### 性能优化建议 针对特定环境或业务特点,还可以进一步调整某些参数来达到更好的性能表现。例如适当增加初始连接数 (`initialSize`) 和活动连接上限 (`maxActive`) 来应对突发流量;缩短检测间隔(`timeBetweenEvictionRunsMillis`) 提升资源释放效率等[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值