赞
踩
Druid是一个数据库连接池,是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。
引入依赖包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.18</version>
</dependency>
application.properties
spring.druid.username=druidadmin spring.druid.password=druidadmin #连接池的配置信息 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource #初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 default:0 spring.datasource.druid.initial-size=8 #最小连接池数量。maxIdle已经废弃 spring.datasource.druid.min-idle=8 #spring.datasource.druid.max-idle= #最大连接池数量。default=8+ spring.datasource.druid.max-active=32 #获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁 spring.datasource.druid.max-wait=6000 #用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow,testOnBorrow,testOnReturn,testWhileIdle都不会起作用。这个可以不配置 spring.datasource.druid.validation-query=select 'x' #单位:秒,检测连接是否有效的超时时间。底层调用jdbc Statement对象的void. setQueryTImeout(int seconds)方法,mysql实现的不是很合理,不建议在mysql下配置此参数 #spring.datasource.druid.validation-query-timeout=60 #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。default=false spring.datasource.druid.test-while-idle=true #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。default=true spring.datasource.druid.test-on-borrow=false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。default=false spring.datasource.druid.test-on-return=false #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。default=false spring.datasource.druid.pool-prepared-statements=false #要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,会存在Oracle下PSCache占用内存过多的问题,可以把这个数据配置大一些,比如100.default=-1 spring.datasource.druid.max-pool-prepared-statement-per-connection-size=32 #连接池中的minIdle数据以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。default=false #spring.datasource.druid.keep-alive=true #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 default=1分钟 #有两个含义: # (1)Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接 # (2)testWhileIdle的判断依据,详细看testWhileIdle属性的说明 spring.datasource.druid.time-between-eviction-runs-millis=60000 #池中的连接保持空闲而不被驱逐的最小时间,单位是毫秒 spring.datasource.druid.min-evictable-idle-time-millis=300000 #合并多个DruidDataSource的监控数据 #spring.datasource.druid.use-global-data-source-stat=true #spring.datasource.druid.filters=#配置多个英文逗号分隔stat,wall,log4j #spring.datasource.druid.connect-properties.#druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 配置StatFilter spring.datasource.druid.filter.stat.enabled=true spring.datasource.druid.filter.stat.db-type=mysql spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=2000 spring.datasource.druid.filter.stat.merge-sql=true # 配置WallFilter #spring.datasource.druid.filter.wall.enabled=true #spring.datasource.druid.filter.wall.db-type=mysql #spring.datasource.druid.filter.wall.config.delete-allow=false #spring.datasource.druid.filter.wall.config.drop-table-allow=false #spring.datasource.druid.filter.wall.config.create-table-allow=false #spring.datasource.druid.filter.wall.config.alter-table-allow=false #spring.datasource.druid.filter.wall.config.truncate-allow=false
添加配置文件DruidProperties.java
import com.alibaba.druid.support.http.StatViewServlet; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @ConfigurationProperties(prefix = "spring.druid") @Data public class DruidProperties { private String username; private String password; // 主要实现web监控的配置处理 @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*"); //白名单: servletRegistrationBean.addInitParameter("allow", "127.0.0.1,129.168.1.1"); //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的即提示:Sorry, you are not permitted to view this page. servletRegistrationBean.addInitParameter("deny", "192.168.1.100"); //登录查看信息的账号密码. servletRegistrationBean.addInitParameter("loginUsername", this.username); servletRegistrationBean.addInitParameter("loginPassword", this.password); //是否能够重置数据. servletRegistrationBean.addInitParameter("resetEnable", "false"); return servletRegistrationBean; } //监控 @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); //所有请求进行监控处理 filterRegistrationBean.addUrlPatterns("/*"); //排除 filterRegistrationBean.addInitParameter("exclusions", "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
druid监控控制台
http://ip:port/druid/login.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。