目录
一步到位springboot目录
gitee:https://gitee.com/chaitou/leilema.git
前言
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
-- alibaba官方
划下重点,"最好"的数据库连接池,还没有带之一,你说吊不吊。集成上去能提升你的数据库访问效率
同时Druid还提供了强大的监控功能:数据源
、Url请求
、sql执行效率
、Web并发
等等都能监控。Druid实在是排查慢sql、优化性能、监控项目居家必备良药!
集成Druid
集成分3步!1. 导入依赖、2. 写入配置、3. 使用
一、导入依赖
<properties>
<!-- 就用最新版好了 -->
<druid-version>RELEASE</druid-version>
</properties>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-version}</version>
</dependency>
二、配置
在.yml
文件的数据源下面配置上druid
的参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://148.70.139.121:3306/leilema?useSSL=false&serverTimezone=GMT%2B8
username: root
password: leilema
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化连接数大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 30000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# 验证数据库连接的有效性
validation-query: select '1' from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
max-open-prepared-statements: 20
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
最后再新建一个DruidConfiguration
配置类,其实也可以写成配置文件的,都一样的。同时我们设置一下打开druid
监控页面的账号密码
,以及页面地址
@Configuration
public class DruidConfiguration {
/**
* 配置监控服务器
*
* @return 返回监控注册的servlet对象
*/
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 添加IP白名单
// servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
// servletRegistrationBean.addInitParameter("deny", "192.168.25.123");
// 添加控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "leilema");
servletRegistrationBean.addInitParameter("loginPassword", "bugpool");
// 是否能够重置数据
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
/**
* 配置服务过滤器
*
* @return 返回过滤器配置对象
*/
@Bean
public FilterRegistrationBean statFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
// 添加过滤规则
filterRegistrationBean.addUrlPatterns("/*");
// 忽略过滤格式
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");
return filterRegistrationBean;
}
}
“有读者可能会问,卧靠,这么复杂的配置,这都能写,也太牛逼了吧。还我我不行了”
好吧,这也是我baidu
抄的,谁tm有事没事背配置啊!到baidu
上撸一份,然后遇到需要定制化的配置就去alibaba
官方源码项目地址上面看一下官方文档,改一改配置就成了…架构师其实也都是google
出来的,不信你找你们公司架构师,让他手撸一份德鲁伊配置出来…
三、使用
使用就跟简单了,直接启动项目,访问项目路径/druid
由于下节才讲到controller
层,所以大家手头上还没有url
请求可以发送,因此监控页面也是空的,那就先看一下我的截图吧。下节讲完controller
层,可以发送几个请求,再过来看监控
可监控类型
-
数据源
显示当前项目下所有数据源,多数据源的项目才会用到。当然了,肯定不会显示密码 -
SQL监控
监控所有执行的sql语句,包括耗时,参数等等 -
SQL防火墙
druid提供了黑白名单的访问,可以清楚的看到sql防护情况。 -
Web应用
可以看到目前运行的web程序的并发数,事务书等等详细信息 -
URI监控
可以监控到所有的请求路径的请求次数、请求时间等参数 -
Session监控
监控session状况,创建时间、最后活跃时间、请求次数、请求时间等参数