druid是java语言中最好的数据库连接池。druid相比于其他的数据库连接池,有两大特性:
- 监控数据库,有利于分析线上数据库问题
- 更容易扩展,同时也很高效。
今天演示一下spring boot集成druid。
实战
1、添加maven依赖。
spring boot版本使用的是1.x的,2.x的版本druid starter还不支持。不过自定义也是没问题的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!--starter-web 方便我们查看效果-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<!--使用mybatis也可以,druid提供的只是连接池-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-jdbc</artifactid>
</dependency>
<dependency>
<groupid>com.alibaba</groupid>
<artifactid>druid-spring-boot-starter</artifactid>
<version> 1.1 . 6 </version>
</dependency>
|
配置druid
2、druid应用的配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
server:
port: 9011
spring:
datasource:
type: com.alibaba.druid.pool.druiddatasource
driver- class -name: com.mysql.jdbc.driver
druid:
initial-size: 5
max-active: 10
min-idle: 5
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
validation-query: select 1
validation-query-timeout: 60000
test-on-borrow: false
test-on- return : false
test- while -idle: true
time-between-eviction-runs-millis: 60000
filter:
stat:
log-slow-sql: true
db-type: mysql
slow-sql-millis: 2000
stat-view-servlet:
login-username: druid
login-password: druid
allow: 127.0 . 0.1
url-pattern: /druid/*
username: root
password: 123456
url: jdbc:mysql: //127.0.0.1:3306/test?characterencoding=utf-8
|
通过javabean的配置更灵活一些,我们通过javabean来配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
@configuration
public class druidconfig {
@bean
public jdbctemplate jdbctemplate(){
return new jdbctemplate(druiddatasource());
}
// configurationproperties可以直接把应用配置的spring.datasource.druid属性开头的值注入到druiddatasource中
@configurationproperties (prefix = "spring.datasource.druid" )
@bean (initmethod = "init" ,destroymethod = "close" )
public druiddatasource druiddatasource(){
druiddatasource druiddatasource = new druiddatasource();
// 添加druid的监控过滤器,当前只演示监控的功能,因此只有一个过滤器,可以实现多个过滤器
linkedlist<filter> filterslist = new linkedlist();
filterslist.add(filter());
druiddatasource.setproxyfilters(filterslist);
return druiddatasource;
}
@bean
public filter filter(){
statfilter statfilter = new statfilter();
// sql执行时间超过2s种的被判定为慢日志
statfilter.setslowsqlmillis( 2000 );
//显示慢日志
statfilter.setlogslowsql( true );
//合并sql,有时,一些相同的慢日志过多影响阅读,开启合并功能
statfilter.setmergesql( true );
return statfilter;
}
// 监控的面板
@bean
public servletregistrationbean servletregistrationbean(){
// 注册自己的sevlet
return new servletregistrationbean( new statviewservlet(), "/druid/*" );
}
}
|
3、新建sql执行测试
使用jdbcteplate选取数据库中的数据,我们只是演示druid的监控效果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@restcontroller
@springbootapplication
public class daoapplication {
public static void main(string[] args) {
springapplication.run(daoapplication. class ,args);
}
@autowired
jdbctemplate jdbctemplate;
@requestmapping ( "/test" )
public list test(){
final list<integer> idlist = new linkedlist<integer>();
jdbctemplate.query( "select * from sh_test1" , new rowcallbackhandler() {
@override
public void processrow(resultset rs) throws sqlexception {
idlist.add(rs.getint( 1 ));
}
});
return idlist;
}
}
|
运行查看效果
5、演示完毕
到这一步,druid已经可以在spring boot中使用了,druid提供了很多监控的选项,文章篇幅有限, 只介绍一下druid集成spring boot的用法。
最后
这篇文章演示了一下druid在springboot中的使用。有关druid的使用请看下面的参考。
参考
[druid常见用法] (https://github.com/alibaba/druid/wiki/%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.jianshu.com/p/d396d2f924c5