记录一下在项目中用纯 YML(application.yml 或者 application.properties)文件、Java 代码配置 Bean 和注解三种方式配置 Alibaba Druid 用于监控或者查看 SQL 状况:
1. 纯配置文件 .yml 或者 .properties
(1)pom.xml 添加相关依赖
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
|
<!-- SPRINGBOOT WEB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SPRINGBOOT DRUID -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version> 1.1 . 10 </version>
</dependency>
<!-- SPRINGBOOT JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>${mysql-connector-java.version}</scope>
</dependency>
<!-- LOG4J -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version> 1.2 . 16 </version>
<scope>compile</scope>
</dependency>
|
(2)配置application.yml 或者 application.properties 文件,本次配置文件为application.yml
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
42
43
44
45
46
47
48
|
spring:
# 数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource # MYSQL 5 驱动:com.mysql.jdbc.Driver,MYSQL 6 + 驱动:com.mysql.cj.jdbc.Driver
driver- class -name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql: //127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
username: root
password: 123456
# 连接池配置
druid:
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存时间
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM sys_user
test- while -idle: true
test-on-borrow: false
test-on- return : false
# 打开 PSCache,并且指定每个连接上 PSCache 的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
# 配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
filters: stat,wall,log4j
# 通过 connection-properties 属性打开 mergeSql 功能;慢 SQL 记录
connection-properties: druid.stat.mergeSql\= true ;druid.stat.slowSqlMillis\= 5000
# 配置 DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: .js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
# 配置 DruidStatViewServlet
stat-view-servlet:
url-pattern: /druid/*
# IP 白名单,没有配置或者为空,则允许所有访问
allow: 127.0 . 0.1
# IP 黑名单,若白名单也存在,则优先使用
deny: 192.168 . 31.253
# 禁用 HTML 中 Reset All 按钮
reset-enable: false
# 登录用户名/密码
login-username: root
login-password: 123
|
(3)启动 SpringBoot 项目访问地址http://localhost:8080/druid/login.html进行登录,若出现一下界面则配置成功
2.Java 代码配置 Bean
(1)pom.xml 依赖
1
2
3
4
5
|
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version> 1.1 . 10 </version>
</dependency>
|
(2)在配置文件 application.yml 中添加 Druid 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# 数据源的其他配置
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
# 配置监控统计拦截的 filters,去掉后监控界面 sql 无法统计, 'wall' 用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql= true ;druid.stat.slowSqlMillis= 500
|
(3)添加 DruidConfig.java 配置文件
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
42
43
44
45
46
47
48
49
50
51
52
53
|
import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
@Configuration
public class DruidConfig {
@Bean
// 将所有前缀为spring.datasource下的配置项都加载DataSource中
@ConfigurationProperties (prefix = "spring.datasource" )
public DataSource druidDataSource() {
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean<Servlet> druidServlet() {
// 进行 druid 监控的配置处理
ServletRegistrationBean<Servlet> srb = new ServletRegistrationBean<>( new StatViewServlet(), "/druid/**" );
// 白名单
srb.addInitParameter( "allow" , "127.0.0.1" );
// 黑名单
srb.addInitParameter( "deny" , "192.168.31.253" );
// 用户名
srb.addInitParameter( "loginUsername" , "root" );
// 密码
srb.addInitParameter( "loginPassword" , "root" );
// 是否可以重置数据源
srb.addInitParameter( "resetEnable" , "false" );
return srb;
}
@Bean
public FilterRegistrationBean<Filter> filterRegistrationBean() {
FilterRegistrationBean<Filter> frb = new FilterRegistrationBean<>();
frb.setFilter( new WebStatFilter());
// 所有请求进行监控处理
frb.addUrlPatterns( "/*" );
// 排除名单
frb.addInitParameter( "exclusions" , "*.js,*.gif,*.jpg,*.css,/druid/*" );
return frb;
}
}
|
(4)启动 SpringBoot 项目访问地址http://localhost:8080/druid/login.html进行查看登录
3.注解
(1)pom.xml 文件中添加 Druid 依赖(同方式二)
(2)配置文件添加信息(同方式二)
(3)配置 WebServlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import com.alibaba.druid.support.http.StatViewServlet;
@WebServlet (urlPatterns = "/druid/*" ,
initParams={
@WebInitParam (name= "allow" ,value= "192.168.16.110,127.0.0.1" ), // IP白名单 (没有配置或者为空,则允许所有访问)
@WebInitParam (name= "deny" ,value= "192.168.16.111" ), // IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam (name= "loginUsername" ,value= "admin" ), // 用户名
@WebInitParam (name= "loginPassword" ,value= "admin" ), // 密码
@WebInitParam (name= "resetEnable" ,value= "false" ) // 禁用HTML页面上的“Reset All”功能
})
public class DruidServlet extends StatViewServlet {
private static final long serialVersionUID = 1L;
}
|
(4)配置 WebFilter
1
2
3
4
5
6
7
8
9
10
11
12
|
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import com.alibaba.druid.support.http.WebStatFilter;
@WebFilter (filterName= "druidWebStatFilter" ,urlPatterns= "/*" ,
initParams={
@WebInitParam (name= "exclusions" ,value= "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" ) // 忽略资源
})
public class DruidFilter extends WebStatFilter {
}
|
(5)配置启动文件SpringBootApplication 用于扫描我们配置的类
添加 @ServletComponentScan 注解进行扫描
1
2
3
4
5
6
7
8
9
10
|
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan ( "com.uy.servlet" )
public class SpringBootApplication{
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication. class , args); } }
|
(6)启动 SpringBoot 项目访问地址http://localhost:8080/druid/login.html进行查看登录
到此这篇关于SpringBoot配置 Druid 三种方式(包括纯配置文件配置)的文章就介绍到这了,更多相关SpringBoot配置 Druid内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/yjq520/p/10779356.html