springboot集成druid数据源并且监控

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。

业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。

首先配置 druid maven 依赖

<dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.0.18</version></dependency>

配置 application.properties
#数据库spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url=jdbc:mysql://localhost:3306/my_data?useUnicode=true&characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#为实体对象所在的包,跟数据库表一一对应mybatis.typeAliasesPackage=com.exer.demo.entity#mapper文件的位置mybatis.mapperLocations=classpath:mapper/*.xml

# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20# 配置获取连接等待超时的时间spring.datasource.maxWait=60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.datasource.minEvictableIdleTimeMillis=300000# 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用spring.datasource.validationQuery=SELECT ‘x‘spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall‘用于防火墙spring.datasource.filters=stat,wall,log4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 合并多个DruidDataSource的监控数据spring.datasource.useGlobalDataSourceStat=true
@Configurationpublic class DruidConfiguration {    @Bean    public ServletRegistrationBean DruidStatViewServle2() {        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid2/*");        //添加初始化参数:initParams

//白名单:        servletRegistrationBean.addInitParameter("allow","192.168.1.106");        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.       // servletRegistrationBean.addInitParameter("deny", "192.168.1.73");        //登录查看信息的账号密码.        servletRegistrationBean.addInitParameter("loginUsername","admin");        servletRegistrationBean.addInitParameter("loginPassword","123456");        //是否能够重置数据.        servletRegistrationBean.addInitParameter("resetEnable","false");        return servletRegistrationBean;    }

/**

* 注册一个:filterRegistrationBean

* @return

*/

@Bean    public FilterRegistrationBean druidStatFilter2(){        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());        //添加过滤规则.        filterRegistrationBean.addUrlPatterns("/*");        //添加不需要忽略的格式信息.        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");        return filterRegistrationBean;    }

}
 重启启动项目 http://192.168.1.106:8081/druid2/login.html   账号和密码: admin 123456

如果不使用代码手动初始化DataSource的话,监控界面的SQL监控会没有数据

这种情况下手动初始化 druid DataSource
@Value("${spring.datasource.url}")private String dbUrl;@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driver-class-name}")private String driverClassName;@Value("${spring.datasource.initialSize}")private int initialSize;@Value("${spring.datasource.minIdle}")private int minIdle;@Value("${spring.datasource.maxActive}")private int maxActive;@Value("${spring.datasource.maxWait}")private int maxWait;@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.datasource.minEvictableIdleTimeMillis}")private int minEvictableIdleTimeMillis;@Value("${spring.datasource.validationQuery}")private String validationQuery;@Value("${spring.datasource.testWhileIdle}")private boolean testWhileIdle;@Value("${spring.datasource.testOnBorrow}")private boolean testOnBorrow;@Value("${spring.datasource.testOnReturn}")private boolean testOnReturn;@Value("${spring.datasource.poolPreparedStatements}")private boolean poolPreparedStatements;@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.datasource.filters}")private String filters;@Value("${spring.datasource.connectionProperties}")private String connectionProperties;@Value("${spring.datasource.useGlobalDataSourceStat}")private boolean useGlobalDataSourceStat;
@Bean     //声明其为Bean实例@Primary  //在同样的DataSource中,首先使用被标注的DataSourcepublic DataSource dataSource(){    DruidDataSource datasource = new DruidDataSource();    datasource.setUrl(this.dbUrl);    datasource.setUsername(username);    datasource.setPassword(password);    datasource.setDriverClassName(driverClassName);

//configuration    datasource.setInitialSize(initialSize);    datasource.setMinIdle(minIdle);    datasource.setMaxActive(maxActive);    datasource.setMaxWait(maxWait);    datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);    datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);    datasource.setValidationQuery(validationQuery);    datasource.setTestWhileIdle(testWhileIdle);    datasource.setTestOnBorrow(testOnBorrow);    datasource.setTestOnReturn(testOnReturn);    datasource.setPoolPreparedStatements(poolPreparedStatements);    datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);    datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat);    try {        datasource.setFilters(filters);    } catch (SQLException e) {        System.err.println("druid configuration initialization filter: "+ e);    }    datasource.setConnectionProperties(connectionProperties);    return datasource;}

SQL监控就可以看到执行信息了。
时间: 2024-10-09 20:29:05

springboot集成druid数据源并且监控的相关文章

springboot 集成druid

1.druid简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource.Druid充当数据库连接池,可以监控数据库访问性能,可以获得SQL执行日志 2.配置 加入druid相关配置(.yml配置文件) spring: #数据库配置 datasource: type: com.alibaba.druid.pool.DruidDataSource

SpringBoot整合Druid数据源详细文档

1.数据库结构 2.项目结构 3.pom.xml文件 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupI

SpringBoot+SpringCloud+vue+Element开发项目——集成Druid数据源

添加依赖 pom.xml <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> 添加配置文件 application.yml server: port: 800

SpringBoot配置Druid数据源

在我刚开始接触JDBC的时候,用的是DriveManager驱动来连接数据库的.而现在大多是用DataSource. 这里先简单说一下区别: 1.datasource是与连接池获取连接,而DriverManager是获取与数据库的连接!DriverManager类的主要作用是管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据服务器的网络连接.但是建立与数据库的连接是一项较耗资源的工作,频繁的进行数据库连接建立操作会产生较大的系统开销,为了解决上述问

Springboot整合Druid数据源

Druid是阿里巴巴的一个开源的JDBC组件,该组件由数据库连接池.插件框架和SQL解析器组成,主要功能如下: 1.DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. 2.DruidDataSource 高效可管理的数据库连接池. 3.SQLParser解析器兼容所有的JDBC数据库,如:Mysql,Oracle.SQL Server数据库. 同时它结合了C3P0.DBCP.PROXOOL等DB池的优点,加入了日志监控,在稳定性.可扩展性和性能方便具有

SpringBoot 集成 Druid

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池.更多资料说明大家可以查看官网Github:https://github.com/alibaba/druid Druid官方已经编写好了相关的启动器,我们可以引入启动器,然后进行相关配置就可以使用Druid的各种功能.如果只是引入Druid依赖包,没有引入Druid的SpringBoot启动器

Spring boot 集成 Druid 数据源

Druid是阿里开源的一个JDBC应用组件,其中包括三部分: DruidDriver:代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource:高效可管理的数据库连接池. SQLParser:实用SQL语法分析 官方文档:https://github.com/alibaba/druid/wiki 依赖 pom.xml Druid Spring Boot Starter是阿里官方提供的Spring Boot插件,用于在Spring Boot项目中集成D

druid数据源-为监控而生

我用的druid版本0.2.9: <dependency>   <groupId>com.alibaba</groupId>   <artifactId>druid</artifactId>   <version>0.2.9</version> </dependency> 由于这个版本的ip获取的有问题,所以覆盖了druid的servlet,并重写获取ip的方法: package com.xxx.web.ser

SpringBoot配置 druid 数据源配置 慢SQL记录

spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull username: root password: root druid: initialSize: 5 application: name: message-center secur