文章目录
- 1. Maven导入依赖包
- 2.配置yml文件
最近因为实际要求搭了一个springboot框架+druid连接池的架子,因为之前没有使用过druid连接池,把过程记录一下,如果有什么不对的地方,请各位指教。
1. Maven导入依赖包
首先当然是引入依赖包,我们用Maven自动帮我们导包。依赖如下
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
这就是我写框架有关于druid部分所引入的依赖,因为我使用的是mysql数据库所以引入的mysql的相关包。
2.配置yml文件
我们这里使用speingboot框架的yml文件进行配置,这是我配置的yml文件,其中也包含了我搭架子的mybatis配置和线程池的配置。
spring:
datasource:
# 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。
如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)
name:test
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/自己使用的数据库
username: root
password:
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
connection-error-retry-attempts: 0
not-full-timeout-retry-count: -1
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# 用来检测连接是否有效的sql,要求是一个查询语句
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
常用参数就是这些,具体参数可以到官网上查看
需要注意的是,虽然我们配置了druid连接池的其它属性,但是不会生效。因为默认是使用的java.sql.Datasource的类来获取属性的,有些属性datasource没有。如果我们想让配置生效,需要手动创建Druid的配置类
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource druid(){
return new DruidDataSource();
}
/**
* 配置监控服务器
* @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", "");
// 添加控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "root");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
// 是否能够重置数据
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;
}
输入http://127.0.0.1:8080/weily/druid/index.html,登录就可以看到druid连接池的监控,账号密码是无名自己配置的,我这里配置的是root和123456
这里就可以看到配置已经生效了,同时我们也可以在sql监控查看我们的sql语句运行状态,方便优化。
需要注意的是使用配置yml文件一定要严格的按照yml文件的格式来写,重要的话说三遍。格式 格式 格式,每一个冒号和空格都必须按照规范,不然会出错。
这样一个springboot+druid连接池的基本配置就配置好了。