介绍
本文介绍 spring2.x 开启druid监控
需要实现:springboot使用druid(以及配置) ,并且要使用该文章的 完全配置文件
如下:
application.yml:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://106.13.165.100:3306/数据库?useSSL=false&characterEncoding=utf8 #不能使用域名
username: 用户名
password: 密码
druid:
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: 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,192.168.163.1
# IP黑名单 (存在共同时,deny优先于allow)
deny: 192.168.1.73
# 禁用HTML页面上的“Reset All”功能
reset-enable: false
# 登录名
login-username: admin
# 登录密码
login-password: 123456
配置类
需要创建配置类,进行配置
@Configuration
public class DruidConfig {
/**
* springboot1.x需要下面代码
*
*/
// @Bean
// @ConfigurationProperties(prefix = "spring.datasource")
// public DataSource druid() {
// return new DruidDataSource();
// }
@Autowired
private DruidStatProperties druidStatProperties;
//配置Druid的监控
// 1、配置一个管理后台的Servlet
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map initParams=null;
try {
initParams=BeanUtils.describe(druidStatProperties.getStatViewServlet());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
if(initParams!=null){
bean.setInitParameters(initParams);
}
return bean;
}
//2、配置一个web监控的filter
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String, String> initParams = new HashMap<>();
try {
BeanUtils.populate(druidStatProperties.getWebStatFilter(),initParams);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
if(initParams!=null) {
bean.setInitParameters(initParams);
}
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
解释
DruidStatProperties类用于封装application.yml的spring.datasource.druid配置项DruidStatProperties.StatViewServlet类用于封装application.yml的spring.datasource.druid.stat-view-servlet配置项DruidStatProperties.WebStatFilter类用于封装application.yml的spring.datasource.druid.web-stat-filter配置项